#!/bin/bash

set -euo pipefail

if [[ $# -ne 1 ]]; then
	echo "" 1>&2
	echo "Compiler for a Go PACKAGE producing GOOS/GOARCH binaries in the" 1>&2
	echo "top-level directory (should not be used for releasing)." 1>&2
	echo "" 1>&2
	echo "usage: $0 PACKAGE..." 1>&2
	echo "" 1>&2
	echo "Features:" 1>&2
	echo "" 1>&2
	echo "* automatically sets -tags=ooni_psiphon_config when possible;" 1>&2
	echo "" 1>&2
	echo "* if GOLANG_EXTRA_FLAGS is set, pass it to the Go compiler." 1>&2
	echo "" 1>&2
	echo "Example:" 1>&2
	echo "" 1>&2
	echo "  ./CLI/go-build-generic ./internal/cmd/miniooni" 1>&2
	echo "" 1>&2
	exit 1
fi

if [[ -f ./internal/engine/psiphon-config.json.age &&
	-f ./internal/engine/psiphon-config.key ]]; then
	OONI_PSIPHON_TAGS=ooni_psiphon_config
else
	OONI_PSIPHON_TAGS=""
fi

set -x
for pkg in "$@"; do
	go build -tags=$OONI_PSIPHON_TAGS -ldflags="-s -w" ${GOLANG_EXTRA_FLAGS:-} $pkg
done