#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$ROOT_DIR" OUT_DIR="$ROOT_DIR/dist" mkdir -p "$OUT_DIR" APP_NAME="qr-scanner" OUT_WIN_EXE="$OUT_DIR/${APP_NAME}.exe" OUT_MAC_AMD64="$OUT_DIR/${APP_NAME}-macos-amd64" OUT_MAC_ARM64="$OUT_DIR/${APP_NAME}-macos-arm64" OUT_LINUX_AMD64="$OUT_DIR/${APP_NAME}-linux-amd64" OUT_LINUX_ARM64="$OUT_DIR/${APP_NAME}-linux-arm64" echo "Building Windows exe -> $OUT_WIN_EXE" CGO_ENABLED=0 GOOS=windows GOARCH=amd64 \ go build -trimpath -ldflags "-s -w" -o "$OUT_WIN_EXE" . echo "Building macOS (amd64) -> $OUT_MAC_AMD64" CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 \ go build -trimpath -ldflags "-s -w" -o "$OUT_MAC_AMD64" . echo "Building macOS (arm64) -> $OUT_MAC_ARM64" CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 \ go build -trimpath -ldflags "-s -w" -o "$OUT_MAC_ARM64" . echo "Building Linux (amd64) -> $OUT_LINUX_AMD64" CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \ go build -trimpath -ldflags "-s -w" -o "$OUT_LINUX_AMD64" . echo "Building Linux (arm64) -> $OUT_LINUX_ARM64" CGO_ENABLED=0 GOOS=linux GOARCH=arm64 \ go build -trimpath -ldflags "-s -w" -o "$OUT_LINUX_ARM64" . echo "Done." echo "Windows: double-click ${APP_NAME}.exe (auto opens http://localhost:8001/)" echo "macOS: chmod +x ${APP_NAME}-macos-* && ./${APP_NAME}-macos-arm64 (or amd64) (auto opens http://localhost:8001/)" echo "Linux: chmod +x ${APP_NAME}-linux-* && ./${APP_NAME}-linux-amd64 (or arm64) (auto opens http://localhost:8001/)"