claude-prism/scripts/build-macos.sh
delibae f594addbe1 ci: Windows-only GitHub Actions, macOS/Linux built locally
- Simplify build-desktop.yml to Windows only (with vcpkg cache)
- Add scripts/build-macos.sh for local macOS builds with signing/notarization
- Remove Travis CI (macOS unsupported, Windows too slow)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 16:50:08 +09:00

59 lines
1.5 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
# Load signing & notarization env vars
ENV_FILE="apps/desktop/src-tauri/.env"
if [ -f "$ENV_FILE" ]; then
set -a
source "$ENV_FILE"
set +a
else
echo "Error: $ENV_FILE not found"
exit 1
fi
TARGET="aarch64-apple-darwin"
VERSION=$(node -p "require('./package.json').version")
TAG="v${VERSION}"
echo "==> Building ClaudePrism $TAG for macOS ($TARGET)"
# Build
export TECTONIC_DEP_BACKEND=vcpkg
export VCPKG_ROOT="$HOME/vcpkg"
export CXXFLAGS="-std=c++17"
export CFLAGS=""
pnpm --filter @claude-prism/desktop tauri build --target "$TARGET"
# Notarize DMG
DMG_PATH=$(find "apps/desktop/src-tauri/target/$TARGET/release/bundle/dmg" -name '*.dmg' | head -1)
APP_PATH="apps/desktop/src-tauri/target/$TARGET/release/bundle/macos/ClaudePrism.app"
if [ -z "$DMG_PATH" ]; then
echo "Error: DMG not found"
exit 1
fi
echo "==> Notarizing $DMG_PATH ..."
xcrun notarytool submit "$DMG_PATH" \
--apple-id "$APPLE_ID" \
--team-id "$APPLE_TEAM_ID" \
--password "$APPLE_PASSWORD" \
--wait --timeout 30m
echo "==> Stapling..."
xcrun stapler staple "$DMG_PATH"
xcrun stapler staple "$APP_PATH"
# Upload to GitHub Release
echo "==> Uploading to GitHub Release $TAG"
gh release view "$TAG" --repo delibae/claude-prism >/dev/null 2>&1 || \
gh release create "$TAG" --repo delibae/claude-prism --title "ClaudePrism $TAG" --generate-notes
gh release upload "$TAG" \
--repo delibae/claude-prism \
--clobber \
"$DMG_PATH"
echo "==> Done! macOS build uploaded to $TAG"