#!/bin/bash # Build Navis GUI for Apple Silicon (arm64). set -euo pipefail cd "$(dirname "$0")/.." # Prefer local toolchain if present. export PATH="$(pwd)/.tools/go/bin:/tmp/go-sdk/go/bin:/usr/local/go/bin:$PATH" python3 scripts/sync-version.py VERSION="$(python3 - <<'PY' import re from pathlib import Path t = Path('internal/update/update.go').read_text() m = re.search(r'CurrentVersion\s*=\s*"([^"]+)"', t) print(m.group(1) if m else '0.0.0') PY )" BUILD="$(python3 - <<'PY' import re from pathlib import Path t = Path('internal/update/update.go').read_text() m = re.search(r'const BuildNumber\s*=\s*(\d+)', t) print(m.group(1) if m else '0') PY )" FULL="${VERSION}.${BUILD}" echo "Building Navis ${VERSION}+${BUILD} (arm64)..." OUT="dist/navis-release/darwin-arm64" mkdir -p "$OUT" LDFLAGS="-s -w" CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 \ go build -ldflags="$LDFLAGS" -trimpath -o "$OUT/Navis" ./cmd/vpnapp CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 \ go build -ldflags="$LDFLAGS" -trimpath -o "$OUT/Navis-cli" ./cmd/vpnclient printf '%s\n' "$FULL" > "$OUT/VERSION" printf '%s\n' "${VERSION}+${BUILD}" > "$OUT/Navis.version" # Ad-hoc sign CLI/bin; packmac also signs the .app (honors NAVIS_CODESIGN_IDENTITY). if command -v codesign >/dev/null 2>&1; then ID="${NAVIS_CODESIGN_IDENTITY:--}" codesign -s "$ID" --force "$OUT/Navis" || codesign -s - --force "$OUT/Navis" codesign -s "$ID" --force "$OUT/Navis-cli" || codesign -s - --force "$OUT/Navis-cli" fi go run ./tools/packmac -bin "$OUT/Navis" -out "$OUT" -version "$VERSION" -build "$FULL" -arch arm64 cp -f "$OUT/Navis.dmg" "$OUT/Navis-${FULL}-arm64.dmg" cp -f "$OUT/Navis.app.zip" "$OUT/Navis-${FULL}-arm64.app.zip" python3 - <', ver, 'bin', h[:12], 'zip', zh[:12] if zh else '-') PY echo "" echo "Done: Navis ${VERSION}+${BUILD}" ls -lh "$OUT"