forked from admin/terminal_worse
38 lines
1.5 KiB
Bash
Executable File
38 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# Reference signing pass: sign every framework with the same team, then the
|
|
# app with the supplied entitlements and provisioning profile.
|
|
#
|
|
# Usage:
|
|
# IDENTITY=... KEYCHAIN=... PROFILE=... ./sign_all.sh work/Terminal.app
|
|
set -euo pipefail
|
|
APP="${1:-work/Terminal.app}"
|
|
IDENTITY="${IDENTITY:?set IDENTITY}"
|
|
KEYCHAIN="${KEYCHAIN:-$HOME/Library/Keychains/login.keychain-db}"
|
|
ENT="${ENT:-scripts/ent.plist}"
|
|
PROFILE="${PROFILE:?set PROFILE}"
|
|
|
|
find "$APP/Frameworks" "$APP/usr" "$APP/Library" -type f \
|
|
\( -name '*.dylib' -o -name '*.so' -o -perm -111 \) -print0 2>/dev/null |
|
|
while IFS= read -r -d '' f; do
|
|
file -b "$f" | grep -q 'Mach-O' || continue
|
|
codesign --force --sign "$IDENTITY" --keychain "$KEYCHAIN" --timestamp=none "$f"
|
|
done
|
|
|
|
find "$APP/Frameworks" -type d -name '*.framework' -print |
|
|
awk '{ print length($0) "\t" $0 }' | sort -rn | cut -f2- |
|
|
while IFS= read -r fw; do
|
|
codesign --force --sign "$IDENTITY" --keychain "$KEYCHAIN" --timestamp=none "$fw"
|
|
done
|
|
|
|
for appex in "$APP"/PlugIns/*.appex; do
|
|
[ -d "$appex" ] || continue
|
|
cp "$PROFILE" "$appex/embedded.mobileprovision"
|
|
codesign --force --sign "$IDENTITY" --keychain "$KEYCHAIN" \
|
|
--entitlements "$ENT" --generate-entitlement-der --timestamp=none "$appex"
|
|
done
|
|
|
|
cp "$PROFILE" "$APP/embedded.mobileprovision"
|
|
codesign --force --sign "$IDENTITY" --keychain "$KEYCHAIN" \
|
|
--entitlements "$ENT" --generate-entitlement-der --timestamp=none "$APP"
|
|
codesign --verify --strict --verbose=2 "$APP"
|