#!/bin/sh -u # source of this code: https://github.com/rednoah/notarize-app ASC_PROVIDER="$1" ASC_USERNAME="$2" ASC_PASSWORD="$3" BUNDLE_ID="$4" BUNDLE_PKG="$5" # create temporary files NOTARIZE_APP_LOG=$(mktemp -t notarize-app) NOTARIZE_INFO_LOG=$(mktemp -t notarize-info) # delete temporary files on exit function finish { rm "$NOTARIZE_APP_LOG" "$NOTARIZE_INFO_LOG" } trap finish EXIT # submit app for notarization if xcrun altool --notarize-app --primary-bundle-id "$BUNDLE_ID" --asc-provider "$ASC_PROVIDER" --username "$ASC_USERNAME" --password "$ASC_PASSWORD" -f "$BUNDLE_PKG" > "$NOTARIZE_APP_LOG" 2>&1; then cat "$NOTARIZE_APP_LOG" RequestUUID=$(awk -F ' = ' '/RequestUUID/ {print $2}' "$NOTARIZE_APP_LOG") # check status periodically while sleep 60 && date; do # check notarization status if xcrun altool --notarization-info "$RequestUUID" --asc-provider "$ASC_PROVIDER" --username "$ASC_USERNAME" --password "$ASC_PASSWORD" > "$NOTARIZE_INFO_LOG" 2>&1; then cat "$NOTARIZE_INFO_LOG" # once notarization is complete, run stapler and exit if ! grep -q "Status: in progress" "$NOTARIZE_INFO_LOG"; then xcrun stapler staple "$BUNDLE_PKG" exit $? fi else cat "$NOTARIZE_INFO_LOG" 1>&2 exit 1 fi done else cat "$NOTARIZE_APP_LOG" 1>&2 exit 1 fi