64 lines
2.2 KiB
Bash
Executable File
64 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
||
# 构建 TinySTT.app:swift build → 组装 bundle → 签名
|
||
set -euo pipefail
|
||
|
||
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
||
cd "$ROOT"
|
||
|
||
export CLANG_MODULE_CACHE_PATH="${CLANG_MODULE_CACHE_PATH:-$ROOT/.build/ModuleCache}"
|
||
export SWIFTPM_MODULECACHE_OVERRIDE="$CLANG_MODULE_CACHE_PATH"
|
||
CONFIG="${1:-release}"
|
||
echo "==> 编译 ${CONFIG}"
|
||
swift build -c "${CONFIG}" --disable-sandbox
|
||
|
||
BIN="$ROOT/.build/${CONFIG}/TinySTT"
|
||
APP="$ROOT/dist/TinySTT.app"
|
||
|
||
echo "==> 组装 bundle"
|
||
rm -rf "$APP"
|
||
mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources"
|
||
cp "$BIN" "$APP/Contents/MacOS/TinySTT"
|
||
cp "$ROOT/Resources/Info.plist" "$APP/Contents/Info.plist"
|
||
cp "$ROOT/Resources/AppIcon.icns" "$APP/Contents/Resources/AppIcon.icns"
|
||
|
||
# 优先使用显式指定 > Apple Development > 本地自签名 > 临时签名。
|
||
# 固定身份很关键:否则每次重建都会让「辅助功能」授权失效。
|
||
resolve_identity() {
|
||
if [ -n "${TINYSTT_SIGN_IDENTITY:-${TINYTTS_SIGN_IDENTITY:-}}" ]; then
|
||
echo "${TINYSTT_SIGN_IDENTITY:-${TINYTTS_SIGN_IDENTITY}}"
|
||
return
|
||
fi
|
||
local valid
|
||
valid="$(security find-identity -v -p codesigning 2>/dev/null || true)"
|
||
if echo "${valid}" | grep -q "Apple Development"; then
|
||
echo "${valid}" | grep "Apple Development" | head -1 | sed -E 's/.*"(.*)"/\1/'
|
||
return
|
||
fi
|
||
if echo "${valid}" | grep -q "TinySTT Dev"; then
|
||
echo "TinySTT Dev"
|
||
return
|
||
fi
|
||
# Keep using a pre-rename identity when one is already installed.
|
||
if echo "${valid}" | grep -q "TinyTTS Dev"; then
|
||
echo "TinyTTS Dev"
|
||
return
|
||
fi
|
||
echo ""
|
||
}
|
||
|
||
IDENTITY="$(resolve_identity)"
|
||
|
||
echo "==> 签名"
|
||
if [ -n "${IDENTITY}" ]; then
|
||
codesign --force --sign "${IDENTITY}" --timestamp=none "$APP" >/dev/null 2>&1 \
|
||
|| codesign --force --sign "${IDENTITY}" "$APP"
|
||
echo "签名身份:${IDENTITY}"
|
||
else
|
||
codesign --force --sign - "$APP" >/dev/null
|
||
echo "⚠️ 只找到临时签名,重建后「辅助功能」授权会失效。"
|
||
echo " 先运行 ./scripts/setup-signing.sh 可生成固定身份。"
|
||
fi
|
||
|
||
codesign --verify --strict "$APP" && echo "==> 签名校验通过"
|
||
echo "==> 产物:$APP"
|