# shellcheck shell=bash

_okstra_ctl_reindex() {
  local project="all"
  while [[ $# -gt 0 ]]; do
    case "$1" in
      --project) project="$2"; shift 2 ;;
      *) printf 'reindex: unknown option: %s\n' "$1" >&2; exit 2 ;;
    esac
  done
  OKSTRA_HOME_RESOLVED="$(okstra_central_home)" \
  OKSTRA_CTL_LIB_DIR="$SCRIPT_DIR" \
  OK_PROJECT="$project" \
  python3 - <<'PY'
import os, sys
sys.path.insert(0, os.environ["OKSTRA_CTL_LIB_DIR"])
from pathlib import Path
from okstra_ctl import (discover_project_roots, backfill_project,
                            mark_backfilled, central_lock)
home = Path(os.environ["OKSTRA_HOME_RESOLVED"])
target = os.environ["OK_PROJECT"]
total = 0
# 중앙 락으로 보호 — record_start/reconcile 와 같은 lock 위에서 직렬화하여
# projects/<id>/meta.json 의 read-modify-write 가 손실되지 않게 한다.
with central_lock(home):
    # 신규 모델: discover_project_roots 는 ~/.okstra/projects/*/meta.json 을
    # 스캔한다(과거 examples/projects/*.conf.sh 모델 폐기).
    for pid, root in discover_project_roots(home):
        if target != "all" and pid != target:
            continue
        n = backfill_project(home, pid, Path(root))
        print(f"{pid}: {n} new run(s) backfilled")
        total += n
    if target == "all":
        mark_backfilled(home)
print(f"total: {total}")
PY
}
