Chris@34: #!/bin/bash Chris@34: Chris@34: ## The following assumes we have generated an app password at Chris@34: ## appleid.apple.com and then stored it to keychain id "altool" using Chris@34: ## e.g. Chris@34: ## security add-generic-password -a "cannam+apple@all-day-breakfast.com" \ Chris@34: ## -w "generated-app-password" -s "altool" Chris@34: Chris@34: ## NB to verify: Chris@34: # spctl -a -v "/Applications/Application.app" Chris@34: Chris@34: user="cannam+apple@all-day-breakfast.com" Chris@34: bundleid="org.sonicvisualiser.VampPluginPackInstaller" Chris@34: Chris@34: set -e Chris@34: Chris@62: target="$1" Chris@34: Chris@62: if [ ! -f "$target" ] || [ -n "$2" ]; then Chris@62: echo "Usage: $0 " Chris@62: echo " e.g. $0 MyApplication-1.0.target" Chris@34: exit 2 Chris@34: fi Chris@34: Chris@34: set -u Chris@34: Chris@34: echo Chris@34: echo "Uploading for notarization..." Chris@34: Chris@34: uuidfile=.notarization-uuid Chris@34: statfile=.notarization-status Chris@34: rm -f "$uuidfile" "$statfile" Chris@34: Chris@34: xcrun altool --notarize-app \ Chris@62: -f "$target" \ Chris@34: --primary-bundle-id "$bundleid" \ Chris@34: -u "$user" \ Chris@34: -p @keychain:altool 2>&1 | tee "$uuidfile" Chris@34: Chris@34: uuid=$(cat "$uuidfile" | grep RequestUUID | awk '{ print $3; }') Chris@34: Chris@34: if [ -z "$uuid" ]; then Chris@34: echo Chris@34: echo "Failed (no UUID returned, check output)" Chris@34: exit 1 Chris@34: fi Chris@34: Chris@34: echo "Done, UUID is $uuid" Chris@34: Chris@34: echo Chris@34: echo "Waiting and checking for completion..." Chris@34: Chris@34: while true ; do Chris@34: sleep 30 Chris@34: Chris@34: xcrun altool --notarization-info \ Chris@34: "$uuid" \ Chris@34: -u "$user" \ Chris@34: -p @keychain:altool 2>&1 | tee "$statfile" Chris@34: Chris@34: if grep -q 'Package Approved' "$statfile"; then Chris@34: echo Chris@34: echo "Approved! Status output is:" Chris@34: cat "$statfile" Chris@34: break Chris@34: elif grep -q 'in progress' "$statfile" ; then Chris@34: echo Chris@34: echo "Still in progress... Status output is:" Chris@34: cat "$statfile" Chris@34: echo "Waiting..." Chris@34: else Chris@34: echo Chris@34: echo "Failure or unknown status in output:" Chris@34: cat "$statfile" Chris@34: exit 2 Chris@34: fi Chris@34: done Chris@34: Chris@34: echo Chris@62: echo "Done, don't forget to staple the target or its contents" Chris@62: echo "(e.g. xcrun stapler staple '$target')" Chris@62: exit 0 Chris@34: