Files
ITWorx_MCP_Hub-Public/scripts/next_packet.py
T

55 lines
1.6 KiB
Python

#!/usr/bin/env python3
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
_ROOT_DIR = Path(__file__).resolve().parents[1]
if str(_ROOT_DIR) not in sys.path:
sys.path.insert(0, str(_ROOT_DIR))
from scripts.packlib import PackError, load_plan, load_state, select_next_packet # noqa: E402
def main() -> int:
parser = argparse.ArgumentParser(
description="Select the next ready ITWorx MCP Hub work packet."
)
parser.add_argument("--json", action="store_true", help="emit JSON")
args = parser.parse_args()
try:
selection = select_next_packet(load_plan(), load_state())
except PackError as exc:
print(f"ERROR: {exc}", file=sys.stderr)
return 2
if selection.packet is None:
payload = {"packet": None, "reason": selection.reason}
print(json.dumps(payload, indent=2) if args.json else selection.reason)
return 0 if selection.reason == "all packets completed" else 3
packet = selection.packet
payload = {
"packet": packet["id"],
"title": packet.get("title"),
"effort": packet.get("effort"),
"dependencies": packet.get("deps", []),
"reason": selection.reason,
"document": f"implementation/work-packets/{packet['id']}.md",
}
if args.json:
print(json.dumps(payload, indent=2))
else:
print(
f"{packet['id']} — {packet.get('title')} [{packet.get('effort')}] ({selection.reason})"
)
print(payload["document"])
return 0
if __name__ == "__main__":
sys.exit(main())