#!/usr/bin/env python3
"""Inspect or atomically update the first-incomplete StickerMan project stage."""

from __future__ import annotations

import argparse
import json
from pathlib import Path

from project_runtime import STAGES, first_incomplete, load_state, require_project_root, save_stage


def main() -> int:
    parser = argparse.ArgumentParser()
    parser.add_argument("project_root", type=Path)
    parser.add_argument("--set-stage", choices=STAGES)
    parser.add_argument("--status", choices=("pending", "in_progress", "PASS", "blocked", "failed"))
    parser.add_argument("--evidence", type=Path)
    args = parser.parse_args()
    root = require_project_root(args.project_root)
    if bool(args.set_stage) != bool(args.status):
        parser.error("--set-stage and --status must be supplied together")
    if args.set_stage:
        evidence = None
        if args.evidence:
            evidence_path = args.evidence.resolve()
            evidence_path.relative_to(root)
            evidence = {"path": str(evidence_path)}
        save_stage(root, args.set_stage, args.status, evidence)
    state = load_state(root)
    print(json.dumps({"first_incomplete": first_incomplete(root), "state": state}, ensure_ascii=False, indent=2))
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
