#!/bin/bash # from https://github.com/rednoah/notarize-app/blob/master/notarize-app set -exuo pipefail DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" ASC_PROVIDER='MischaSpiegelmock10100337' ASC_USERNAME='thadwooster@gmail.com' ASC_PASSWORD='@keychain:AC_PASSWORD' BUNDLE_ID="net.projectm.installer" BUNDLE_PKG="$DIR/../ProjectM.pkg" # 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