#!/bin/sh set -eu SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) ROOT_DIR=$(CDPATH= cd -- "$SCRIPT_DIR/../.." && pwd) CORE_DIR="$ROOT_DIR/client/core" DIST_DIR="$ROOT_DIR/client/dist" RELEASE_DIR="$ROOT_DIR/client/macos/release" APP_DIR="$RELEASE_DIR/EveryPublish.app" ARCH=${MAC_ARCH:-arm64} SIGN_IDENTITY=${MAC_SIGN_IDENTITY:--} case "$ARCH" in arm64) GOARCH=arm64; SWIFT_ARCH=arm64 ;; x64) GOARCH=amd64; SWIFT_ARCH=x86_64 ;; *) echo "Unsupported MAC_ARCH: $ARCH (use arm64 or x64)" >&2; exit 2 ;; esac mkdir -p "$DIST_DIR" "$RELEASE_DIR" (cd "$CORE_DIR" && GOOS=darwin GOARCH="$GOARCH" CGO_ENABLED=0 go build -trimpath -ldflags '-s -w' -o "$DIST_DIR/agent-core" .) chmod 755 "$DIST_DIR/agent-core" rm -rf "$APP_DIR" mkdir -p "$APP_DIR/Contents/MacOS" "$APP_DIR/Contents/Resources" swiftc "$SCRIPT_DIR/EveryPublishMacOSApp.swift" \ -target "$SWIFT_ARCH-apple-macosx13.0" \ -O \ -parse-as-library \ -framework SwiftUI \ -framework AppKit \ -framework UserNotifications \ -o "$APP_DIR/Contents/MacOS/EveryPublish" cp "$DIST_DIR/agent-core" "$APP_DIR/Contents/Resources/agent-core" chmod 755 "$APP_DIR/Contents/MacOS/EveryPublish" "$APP_DIR/Contents/Resources/agent-core" cat > "$APP_DIR/Contents/Info.plist" < CFBundleDisplayNameEveryPublish CFBundleExecutableEveryPublish CFBundleIdentifiercom.everypublish.macos CFBundleNameEveryPublish CFBundlePackageTypeAPPL CFBundleShortVersionString0.3.0 CFBundleVersion0.3.0 LSMinimumSystemVersion13.0 LSUIElement NSHighResolutionCapable PLIST if [ "$SIGN_IDENTITY" = "-" ]; then DMG_SUFFIX="-local" echo "Signing app ad hoc for local testing (set MAC_SIGN_IDENTITY for distribution)" codesign --force --deep --sign - "$APP_DIR" else DMG_SUFFIX="" echo "Signing app with $SIGN_IDENTITY" codesign --force --deep --options runtime --timestamp --sign "$SIGN_IDENTITY" "$APP_DIR" fi codesign --verify --deep --strict "$APP_DIR" if command -v hdiutil >/dev/null 2>&1; then STAGE_DIR=$(mktemp -d "$RELEASE_DIR/dmg-stage.XXXXXX") trap 'rm -rf "$STAGE_DIR"' EXIT cp -R "$APP_DIR" "$STAGE_DIR/EveryPublish.app" ln -s /Applications "$STAGE_DIR/Applications" rm -f "$RELEASE_DIR/EveryPublish-0.3.0-$ARCH.dmg" "$RELEASE_DIR/EveryPublish-0.3.0-$ARCH-local.dmg" hdiutil create -volname EveryPublish -srcfolder "$STAGE_DIR" -ov -format UDZO "$RELEASE_DIR/EveryPublish-0.3.0-$ARCH$DMG_SUFFIX.dmg" >/dev/null fi file "$APP_DIR/Contents/MacOS/EveryPublish" "$APP_DIR/Contents/Resources/agent-core" echo "Built $APP_DIR"