#!/bin/sh
# Reproduce both retained Go executables using exact compiled release UI assets.
# This does not rebuild the UI or establish its preferred-source completeness.
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 prometheus-v3.15.0.tar.gz --strip-components=1 -C "$output_dir/src"
for archive in prometheus-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 prometheus-web-ui-3.15.0.tar.gz -C "$output_dir/src/web/ui"
cd "$output_dir/src/web/ui"
cp embed.go.tmpl embed.go
find static -type f ! -name '*.gz' -exec gzip -f -n {} \;
find static -type f -name '*.gz' | LC_ALL=C sort | xargs echo //go:embed >> embed.go
echo 'var EmbedFS embed.FS' >> embed.go
sha256sum embed.go > "$output_dir/embed-go.sha256"
find static -type f -name '*.gz' | 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,builtinassets -mod=readonly -buildvcs=false -trimpath \
  -ldflags '-s -w -X github.com/prometheus/common/version.Version=3.15.0 -X github.com/prometheus/common/version.Revision=5241a27fe3c6983549fccc32f6e65917408c63cd -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-25T08:56:22Z' \
  -o "$output_dir/bin/" ./cmd/prometheus ./cmd/promtool
for name in prometheus promtool; do
  go version -m "$output_dir/bin/$name" > "$output_dir/$name-go-version-m.txt"
  go list -tags netgo,builtinassets -deps -json "./cmd/$name" > "$output_dir/$name-packages.json"
  sha256sum "$output_dir/bin/$name"
done
