77 lines
2.9 KiB
Bash
Executable File
77 lines
2.9 KiB
Bash
Executable File
#!/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" <<PLIST
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>CFBundleDisplayName</key><string>EveryPublish</string>
|
|
<key>CFBundleExecutable</key><string>EveryPublish</string>
|
|
<key>CFBundleIdentifier</key><string>com.everypublish.macos</string>
|
|
<key>CFBundleName</key><string>EveryPublish</string>
|
|
<key>CFBundlePackageType</key><string>APPL</string>
|
|
<key>CFBundleShortVersionString</key><string>0.3.0</string>
|
|
<key>CFBundleVersion</key><string>0.3.0</string>
|
|
<key>LSMinimumSystemVersion</key><string>13.0</string>
|
|
<key>LSUIElement</key><false/>
|
|
<key>NSHighResolutionCapable</key><true/>
|
|
</dict>
|
|
</plist>
|
|
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"
|