| #!/bin/bash |
| |
| set -euo pipefail |
|
|
| cd "$(dirname "$0")/.." |
|
|
| VERSION_VALUE="${VERSION:-dev}" |
| DIST_DIR="${DIST_DIR:-dist}" |
| MODE="${1:-current}" |
|
|
| build_one() { |
| local goos_value="$1" |
| local goarch_value="$2" |
| local ext="" |
|
|
| if [ "$goos_value" = "windows" ]; then |
| ext=".exe" |
| fi |
|
|
| local output_path="$DIST_DIR/pinchtab-$goos_value-$goarch_value$ext" |
|
|
| echo "📦 Building release-style binary..." |
| echo " target: ${goos_value}/${goarch_value}" |
| echo " output: ${output_path}" |
|
|
| GOCACHE="${GOCACHE:-$PWD/.gocache}" \ |
| GOOS="$goos_value" \ |
| GOARCH="$goarch_value" \ |
| go build \ |
| -buildvcs=false \ |
| -ldflags="-s -w -X main.version=${VERSION_VALUE}" \ |
| -o "$output_path" \ |
| ./cmd/pinchtab |
|
|
| if command -v stat >/dev/null 2>&1; then |
| if stat -f '%z bytes %N' "$output_path" >/dev/null 2>&1; then |
| stat -f '%z bytes %N' "$output_path" |
| else |
| stat -c '%s bytes %n' "$output_path" |
| fi |
| fi |
|
|
| echo "✅ Binary complete: ${output_path}" |
| } |
|
|
| mkdir -p "$DIST_DIR" .gocache |
|
|
| ./scripts/build-dashboard.sh |
|
|
| case "$MODE" in |
| all) |
| for goos_value in linux darwin windows; do |
| for goarch_value in amd64 arm64; do |
| build_one "$goos_value" "$goarch_value" |
| done |
| done |
| ;; |
| current) |
| build_one "${GOOS:-$(go env GOOS)}" "${GOARCH:-$(go env GOARCH)}" |
| ;; |
| *) |
| echo "usage: bash scripts/binary.sh [all]" |
| exit 1 |
| ;; |
| esac |
|
|
| if [ "$MODE" = "all" ]; then |
| echo "✅ All release binaries complete in ${DIST_DIR}/" |
| fi |
|
|