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

repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"

private_modules=(
  "github.com/pingcap-inc/nexuscrm-api-host"
  "github.com/pingcap-inc/nexuscrm-connectors"
  "github.com/pingcap-inc/nexuscrm-contract"
  "github.com/pingcap-inc/nexuscrm-controlplane"
)

go_mods=(
  "backend/go.mod"
  "backend/distributions/go.mod"
)

pseudo_version_re='(^|[.-])[0-9]{14}-[0-9a-f]{12}$'
violations=0

for go_mod in "${go_mods[@]}"; do
  path="$repo_root/$go_mod"
  if [[ ! -f "$path" ]]; then
    echo "::error::$go_mod is missing"
    violations=1
    continue
  fi

  for module in "${private_modules[@]}"; do
    version="$(awk -v module="$module" '$1 == module { print $2; exit }' "$path")"
    if [[ -z "$version" ]]; then
      continue
    fi
    if [[ "$version" =~ $pseudo_version_re ]]; then
      echo "::error file=$go_mod::$module must use a tagged release, got pseudo-version $version"
      violations=1
    fi
  done
done

exit "$violations"
