#!/bin/sh
# Reproduce both retained Go executables with their original compiled UI assets.
# UI compilation and regeneration of compressed files are separate operations.
set -eu
source_dir=$(cd "$1" && pwd)
output_dir=$2
mkdir "$output_dir"
output_dir=$(cd "$output_dir" && pwd)
cd "$source_dir"
sha256sum -c SHA256SUMS
mkdir "$output_dir/src" "$output_dir/modcache" "$output_dir/buildcache" "$output_dir/bin"
tar -xzf alertmanager-v0.34.1.tar.gz --strip-components=1 -C "$output_dir/src"
for archive in alertmanager-module-inputs-*.tar.gz; do
  tar -xzf "$archive" -C "$output_dir/modcache"
done
cp records/go.mod records/go.sum "$output_dir/src/"
tar -xzf alertmanager-web-ui-0.34.1.tar.gz -C "$output_dir/src/ui/app"
cd "$output_dir/src/ui/app"
find dist -type f | LC_ALL=C sort | xargs sha256sum > "$output_dir/embedded-assets.SHA256SUMS"
export GOTOOLCHAIN=local GOWORK=off CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GOMAXPROCS=4
export GOPROXY=off GOSUMDB=off GOMODCACHE="$output_dir/modcache" GOCACHE="$output_dir/buildcache"
cd "$output_dir/src"
test "$(go env GOVERSION)" = go1.27.2
go mod download $(cat "$source_dir/records/linked-module-downloads.txt")
go mod verify
go build -p 4 -tags netgo -mod=readonly -buildvcs=false -trimpath \
  -ldflags '-s -w -X github.com/prometheus/common/version.Version=0.34.1 -X github.com/prometheus/common/version.Revision=73c6bfe7393929211294c1954f30d8ed78e4d0ad -X github.com/prometheus/common/version.Branch=hardened -X github.com/prometheus/common/version.BuildUser=thepeoples.io -X github.com/prometheus/common/version.BuildDate=2026-09-17T08:12:07Z' \
  -o "$output_dir/bin/" ./cmd/alertmanager ./cmd/amtool
for name in alertmanager amtool; do
  go version -m "$output_dir/bin/$name" > "$output_dir/$name-go-version-m.txt"
  go list -tags netgo -deps -json "./cmd/$name" > "$output_dir/$name-packages.json"
  sha256sum "$output_dir/bin/$name"
done
