"""nova env-transition — detect/record the applied environment (REQ-183).""" from __future__ import annotations import json from core.env_transition import detect_prior_env, record_applied_env def add_parser(subparsers): p = subparsers.add_parser("env-transition", help="detect/record the env for a contract") sub = p.add_subparsers(dest="env_transition_command", required=True) pd = sub.add_parser("detect") pd.add_argument("--contract-id", required=True) pd.add_argument("--consumer-repo", required=True) pd.add_argument("--new-env", required=True) pr = sub.add_parser("record") pr.add_argument("--contract-id", required=True) pr.add_argument("--consumer-repo", required=True) pr.add_argument("--env", required=True) p.set_defaults(_run=run) def run(args) -> int: cmd = args.env_transition_command payload = _dispatch(cmd, args) print(json.dumps(payload)) return 0 if cmd == "detect" else (0 if payload["recorded"] else 1) def _dispatch(cmd, args) -> dict: return {"prior_env": detect_prior_env(args.contract_id, args.consumer_repo, args.new_env)} if cmd == "detect" else {"recorded": record_applied_env(args.contract_id, args.consumer_repo, args.env)} if __name__ == "__main__": import sys print("use: nova env-transition detect|record ...", file=sys.stderr)