You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.3 KiB
84 lines
2.3 KiB
#!/usr/bin/env bash
|
|
# from https://github.com/metabrainz/picard/blob/e1354632d2db305b7a7624282701d34d73afa225/scripts/package/macos-notarize-app.sh
|
|
|
|
|
|
if [ -z "$1" ]; then
|
|
echo "Specify app bundle as first parameter"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$APPLE_ID_USER" ] || [ -z "$APPLE_ID_PASSWORD" ]; then
|
|
echo "You need to set your Apple ID credentials with \$APPLE_ID_USER and \$APPLE_ID_PASSWORD."
|
|
exit 1
|
|
fi
|
|
|
|
APP_BUNDLE=$(basename "$1")
|
|
APP_BUNDLE_DIR=$(dirname "$1")
|
|
|
|
cd "$APP_BUNDLE_DIR" || exit 1
|
|
|
|
# Package app for submission
|
|
echo "Generating ZIP archive ${APP_BUNDLE}.zip..."
|
|
ditto -c -k --rsrc --keepParent "$APP_BUNDLE" "${APP_BUNDLE}.zip"
|
|
|
|
# Submit for notarization
|
|
echo "Submitting $APP_BUNDLE for notarization..."
|
|
RESULT=$(xcrun altool --notarize-app --type osx \
|
|
--file "${APP_BUNDLE}.zip" \
|
|
--primary-bundle-id org.electrum.electrum \
|
|
--username $APPLE_ID_USER \
|
|
--password @env:APPLE_ID_PASSWORD \
|
|
--output-format xml
|
|
)
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "Submitting $APP_BUNDLE failed:"
|
|
echo "$RESULT"
|
|
exit 1
|
|
fi
|
|
|
|
REQUEST_UUID=$(echo "$RESULT" | xpath \
|
|
"//key[normalize-space(text()) = 'RequestUUID']/following-sibling::string[1]/text()" 2>/dev/null
|
|
)
|
|
|
|
if [ -z "$REQUEST_UUID" ]; then
|
|
echo "Submitting $APP_BUNDLE failed:"
|
|
echo "$RESULT"
|
|
exit 1
|
|
fi
|
|
|
|
echo "$(echo "$RESULT" | xpath \
|
|
"//key[normalize-space(text()) = 'success-message']/following-sibling::string[1]/text()" 2> /dev/null)"
|
|
|
|
# Poll for notarization status
|
|
echo "Submitted notarization request $REQUEST_UUID, waiting for response..."
|
|
sleep 60
|
|
while :
|
|
do
|
|
RESULT=$(xcrun altool --notarization-info "$REQUEST_UUID" \
|
|
--username "$APPLE_ID_USER" \
|
|
--password @env:APPLE_ID_PASSWORD \
|
|
--output-format xml
|
|
)
|
|
STATUS=$(echo "$RESULT" | xpath \
|
|
"//key[normalize-space(text()) = 'Status']/following-sibling::string[1]/text()" 2>/dev/null
|
|
)
|
|
|
|
if [ "$STATUS" = "success" ]; then
|
|
echo "Notarization of $APP_BUNDLE succeeded!"
|
|
break
|
|
elif [ "$STATUS" = "in progress" ]; then
|
|
echo "Notarization in progress..."
|
|
sleep 20
|
|
else
|
|
echo "Notarization of $APP_BUNDLE failed:"
|
|
echo "$RESULT"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# Staple the notary ticket
|
|
xcrun stapler staple "$APP_BUNDLE"
|
|
|
|
# rm zip
|
|
rm "${APP_BUNDLE}.zip"
|
|
|