#!/usr/bin/env bash # Setup stable development code signing to reduce keychain prompts. set -euo pipefail APP_NAME=${APP_NAME:-MyApp} CERT_NAME="${APP_NAME} Development" if security find-certificate -c "$CERT_NAME" >/dev/null 2>&1; then echo "Certificate '$CERT_NAME' already exists." echo "Export this in your shell profile:" echo " export APP_IDENTITY='$CERT_NAME'" exit 0 fi echo "Creating self-signed certificate '$CERT_NAME'..." TEMP_DIR=$(mktemp -d) chmod 700 "$TEMP_DIR" TEMP_CONFIG="$TEMP_DIR/dev.cnf" KEY_PATH="$TEMP_DIR/dev.key" CRT_PATH="$TEMP_DIR/dev.crt" P12_PATH="$TEMP_DIR/dev.p12" trap 'rm -rf "$TEMP_DIR"' EXIT cat > "$TEMP_CONFIG" </dev/null openssl pkcs12 -export -out "$P12_PATH" \ -inkey "$KEY_PATH" -in "$CRT_PATH" \ -passout pass: 2>/dev/null security import "$P12_PATH" -k ~/Library/Keychains/login.keychain-db \ -T /usr/bin/codesign -T /usr/bin/security echo "" echo "Trust this certificate for code signing in Keychain Access." echo "Then export in your shell profile:" echo " export APP_IDENTITY='$CERT_NAME'"