#!/usr/bin/env bash
set -euo pipefail

repo_root="${1:-$(pwd -P)}"
cd "${repo_root}"

git_commit="${AGENTTEAM_SERVER_GIT_COMMIT:-}"
if [[ -z "${git_commit}" ]]; then
  git_commit="$(git rev-parse --short HEAD 2>/dev/null || true)"
fi
if [[ -z "${git_commit}" ]]; then
  git_commit="unknown"
fi

version="${AGENTTEAM_SERVER_VERSION:-}"
if [[ -z "${version}" ]]; then
  version="$(git describe --tags --always --dirty 2>/dev/null || true)"
fi
if [[ -z "${version}" ]]; then
  echo "AGENTTEAM_SERVER_VERSION is required when git cannot determine a build version" >&2
  exit 1
fi
build_time="${AGENTTEAM_SERVER_BUILD_TIME:-}"
if [[ -z "${build_time}" ]]; then
  build_time="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
fi

parts=()
parts+=("-X" "github.com/tidbcloud/AgentTeam/internal/versioning.Version=${version}")
parts+=("-X" "github.com/tidbcloud/AgentTeam/internal/versioning.GitCommit=${git_commit}")
parts+=("-X" "github.com/tidbcloud/AgentTeam/internal/versioning.BuildTime=${build_time}")

(
  IFS=' '
  printf '%s\n' "${parts[*]}"
)
