#!/usr/bin/env bash
#
# Regenerate all proto packages in topological order.
#
# api-common must be generated first because all other proto packages
# import coda/common/v1/types.proto from it.
#
# Usage: ./scripts/buf-generate-all.sh
#
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"

PACKAGES=(
  # Tier 0: api-common owns coda.common.v1 — must generate first
  "packages/api-common"
  # Tier 1: domain packages (depend on coda.common.v1)
  "packages/core-api"
  "packages/admin-api"
  "packages/search-api"
  "packages/runner-api"
  "packages/tools-api"
  "packages/datasources-api"
  "packages/dashboards-api"
)

for pkg in "${PACKAGES[@]}"; do
  dir="$ROOT/$pkg"
  if [[ ! -f "$dir/buf.gen.yaml" ]]; then
    echo "SKIP $pkg (no buf.gen.yaml)"
    continue
  fi
  echo "==> buf generate $pkg"
  (cd "$dir" && pnpm buf:generate)
done

echo "Done. Run 'git diff -- '*/gen/' to verify changes."
