AutoCat/dmg/sign_dmg.sh
2020-10-13 19:00:59 +03:00

62 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
APP=$1
VERSION=$2
CODESIGNID="Developer ID Application: Selim Mustafaev"
NOTARY="--username selim@fastmail.fm --password actd-lhgc-kooe-jtrs"
APPNAME="AutoCat"
BUNDLEID="pro.aliencat.AutoCat"
function msg {
printf "\\n${fBold}-- %s${fNormal}\\n" "${@}"
}
srcDir="$(mktemp -dt $$)"
msg "Preparing disk image sources at ${srcDir}:"
cp -R "${APP}" "${srcDir}"
ln -s /Applications "${srcDir}"
# Disk image name
dmg_name="${APPNAME}-${VERSION}"
msg "Creating disk image:"
hdiutil create -format UDBZ -fs HFS+ -srcdir "${srcDir}" -volname "${dmg_name}" "${dmg_name}.dmg"
# Sign disk image
codesign --deep --force -v -s "${CODESIGNID}" --timestamp "${dmg_name}.dmg"
# Notarize the dmg
if ! test -z "$NOTARY" ; then
zip "${dmg_name}.dmg.zip" "${dmg_name}.dmg"
uuid=`xcrun altool --notarize-app --primary-bundle-id "${BUNDLEID}" ${NOTARY} --file "${dmg_name}.dmg.zip" 2>&1 | grep 'RequestUUID' | awk '{ print $3 }'`
echo "dmg Result= $uuid" # Display identifier string
sleep 15
while :
do
fullstatus=`xcrun altool --notarization-info "$uuid" ${NOTARY} 2>&1` # get the status
status1=`echo "$fullstatus" | grep 'Status\:' | awk '{ print $2 }'`
if [ "$status1" = "success" ]; then
xcrun stapler staple "${dmg_name}.dmg" # staple the ticket
xcrun stapler validate -v "${dmg_name}.dmg"
echo "dmg Notarization success"
break
elif [ "$status1" = "in" ]; then
echo "dmg Notarization still in progress, sleeping for 15 seconds and trying again"
sleep 15
else
echo "dmg Notarization failed fullstatus below"
echo "$fullstatus"
exit 1
fi
done
fi
# Zip disk image for redistribution
#zip "${dmg_name}.zip" "${dmg_name}.dmg"
#rm "${dmg_name}.dmg"
msg "Removing disk image caches:"
rm -rf "${srcDir}"
rm "${dmg_name}.dmg.zip"