#!/usr/bin/env bash
set -uo pipefail
#MISE description="Build Go binary for distribution"

BIN_BASENAME="dist/md-social"
TARGETS="darwin-arm64 darwin-amd64 linux-arm64 linux-amd64 windows-amd64"
COMMIT="${COMMIT:-$(git rev-parse --short HEAD 2>/dev/null || echo unknown)}"
DATE_ISO="${DATE_ISO:-$(date -u +%Y-%m-%dT%H:%M:%SZ)}"
CGO_ENABLED="${CGO:-0}"

BASE_LDFLAGS="-s -w -X main.commit=${COMMIT} -X main.date=${DATE_ISO}"
[[ -n "${LDFLAGS:-}" ]] && BASE_LDFLAGS="${BASE_LDFLAGS} ${LDFLAGS}"

for target in ${TARGETS}; do
   IFS=- read -r GOOS GOARCH VARIANT <<< "${target}"
   GOARM_FLAG=""
   if [[ "${GOARCH}" == "arm" ]]; then
      GOARM="7"
   fi

   EXT=""
   [[ "${GOOS}" == "windows" ]] && EXT=".exe"
   OUT="${BIN_BASENAME}-${GOOS}-${GOARCH}"
   [[ -n "${GOARM_FLAG}" ]] && OUT="${OUT}v${GOARM}"
   OUT="${OUT}${EXT}"

   echo "-> ${GOOS}/${GOARCH}${GOARM_FLAG:+ (GOARM=${GOARM})} -> ${OUT}"

   env CGO_ENABLED="${CGO_ENABLED}" GOOS="${GOOS}" GOARCH="${GOARCH}" ${GOARM_FLAG} \
       go build -trimpath -ldflags "${BASE_LDFLAGS}" -o "${OUT}" .
done
