#!/bin/bash
# guard.sh — 가드 통합 CLI (Guard MVP Phase 1)
#
# 사용법:
#   ./scripts/guard.sh scope <task-id>       # task_scope.py 실행
#   ./scripts/guard.sh pre-push <task-id>    # pre_push_guard.py 실행
#   ./scripts/guard.sh qc-check <task-id>    # qc_report_guard.py 실행
#
# Phase 2/3 자리표시 (미구현):
#   ./scripts/guard.sh pre-task <task-id>    # Phase 2
#   ./scripts/guard.sh enqueue <task-id>     # Phase 3
#   ./scripts/guard.sh merge-next            # Phase 3
#
# 종료 코드:
#   0 — PASS / 도움말 출력
#   1 — FAIL (가드 차단)
#   2 — not implemented (Phase 2/3 자리표시)

set -euo pipefail

WORKSPACE="${WORKSPACE:-/home/jay/workspace}"
SCRIPTS_DIR="${WORKSPACE}/scripts"

# ── 사용법 ────────────────────────────────────────────────────────────────────
usage() {
    cat >&2 <<'EOF'
guard.sh — 가드 통합 CLI (Guard MVP Phase 1)

사용법:
  ./scripts/guard.sh <command> [args...]

Phase 1 명령 (구현됨):
  scope <task-id>        task 책임 범위 계산
                           → python3 scripts/task_scope.py --base-sha origin/main
                                      --output-dir memory/tasks/<task-id>/scope/
  pre-push <task-id>     push 직전 4가지 안전 점검
                           → python3 scripts/pre_push_guard.py --task-id <task-id>
  qc-check <task-id>     보고서 정직성 점검
                           → python3 scripts/qc_report_guard.py --task-id <task-id>

Phase 2/3 자리표시 (미구현):
  pre-task <task-id>     (Phase 2 — 미구현)
  enqueue <task-id>      (Phase 3 — 미구현)
  merge-next             (Phase 3 — 미구현)

환경변수:
  WORKSPACE              워크스페이스 루트 (기본: /home/jay/workspace)

종료 코드:
  0  PASS
  1  FAIL (가드 차단)
  2  not implemented

EOF
}

# ── 인자 검사 ─────────────────────────────────────────────────────────────────
if [ $# -eq 0 ] || [ "${1:-}" = "--help" ] || [ "${1:-}" = "-h" ]; then
    usage
    exit 0
fi

CMD="$1"
shift

# ── Phase 1 명령 라우팅 ───────────────────────────────────────────────────────

case "$CMD" in

  scope)
    if [ $# -lt 1 ]; then
        echo "[guard] 오류: 'scope' 명령에 <task-id> 가 필요합니다." >&2
        usage
        exit 1
    fi
    TASK_ID="$1"
    OUTPUT_DIR="${WORKSPACE}/memory/tasks/${TASK_ID}/scope"
    exec python3 "${SCRIPTS_DIR}/task_scope.py" \
        --base-sha "origin/main" \
        --output-dir "${OUTPUT_DIR}" \
        --cwd "${WORKSPACE}"
    ;;

  pre-push)
    if [ $# -lt 1 ]; then
        echo "[guard] 오류: 'pre-push' 명령에 <task-id> 가 필요합니다." >&2
        usage
        exit 1
    fi
    TASK_ID="$1"
    shift
    exec python3 "${SCRIPTS_DIR}/pre_push_guard.py" \
        --task-id "${TASK_ID}" \
        --cwd "${WORKSPACE}" \
        --workspace "${WORKSPACE}" \
        "$@"
    ;;

  qc-check)
    if [ $# -lt 1 ]; then
        echo "[guard] 오류: 'qc-check' 명령에 <task-id> 가 필요합니다." >&2
        usage
        exit 1
    fi
    TASK_ID="$1"
    shift
    exec python3 "${SCRIPTS_DIR}/qc_report_guard.py" \
        --task-id "${TASK_ID}" \
        --workspace "${WORKSPACE}" \
        "$@"
    ;;

  # ── Phase 2/3 자리표시 ──────────────────────────────────────────────────────

  pre-task)
    echo "[guard] 'pre-task' not implemented (Phase 2/3 자리표시)" >&2
    exit 2
    ;;

  enqueue)
    echo "[guard] 'enqueue' not implemented (Phase 2/3 자리표시)" >&2
    exit 2
    ;;

  merge-next)
    echo "[guard] 'merge-next' not implemented (Phase 2/3 자리표시)" >&2
    exit 2
    ;;

  *)
    echo "[guard] 알 수 없는 명령: '${CMD}'" >&2
    echo "[guard] 사용 가능한 명령: scope, pre-push, qc-check, pre-task, enqueue, merge-next" >&2
    usage
    exit 1
    ;;

esac
