#!/usr/bin/env bash # Cross-compile factory for all platforms set -euo pipefail cd "$(dirname "$0")/.." VERSION=${VERSION:-"0.1.0"} DIST_DIR="dist" echo "Building factory v$VERSION..." mkdir -p "$DIST_DIR" # Cross-compile targets declare -A TARGETS=( ["linux-amd64"]="linux/amd64" ["linux-arm64"]="linux/arm64" ["windows-amd64"]="windows/amd64" ["windows-arm64"]="windows/arm64" ["darwin-amd64"]="darwin/amd64" ["darwin-arm64"]="darwin/arm64" ) for name in "${!TARGETS[@]}"; do goos="${name%%-*}" goarch="${name##*-}" platform="${TARGETS[$name]}" output="$DIST_DIR/factory-$goos-$goarch" [[ "$goos" == "windows" ]] && output="$output.exe" echo " → $name ($platform)" GOOS="$goos" GOARCH="$goarch" \ CGO_ENABLED=0 \ go build -ldflags="-s -w -X main.Version=$VERSION" \ -o "$output" ./cmd/factory done echo "" echo "✓ Built to $DIST_DIR/" ls -lh "$DIST_DIR/"