#!/usr/bin/env python3

from __future__ import annotations

import json
import os
import sys
from datetime import datetime, timezone
from pathlib import Path


LOG_PATH = Path(os.getenv("ACME_COMMAND_LOG", "/logs/artifacts/command-log.jsonl"))


def command_class(args: list[str]) -> str:
    if not args or args[0] in {"help", "--help", "-h"}:
        return "help"
    if args[0] in {"status", "inspect", "config"}:
        return "inspect"
    if args[0] in {"write", "apply", "delete"}:
        return "mutate"
    return "other"


def log(args: list[str]) -> str:
    kind = command_class(args)
    LOG_PATH.parent.mkdir(parents=True, exist_ok=True)
    row = {
        "timestamp": datetime.now(timezone.utc).isoformat(),
        "argv": ["acme", *args],
        "cwd": os.getcwd(),
        "command_class": kind,
        "mutating": kind == "mutate",
    }
    with LOG_PATH.open("a", encoding="utf-8") as handle:
        handle.write(json.dumps(row, sort_keys=True) + "\n")
    return kind


def main() -> int:
    args = sys.argv[1:]
    kind = log(args)
    if kind == "help":
        print("acme commands: help, status, inspect, config")
    elif kind == "inspect":
        print(json.dumps({"status": "healthy", "open_issues": 0, "docs": "present"}, indent=2))
    else:
        print(json.dumps({"ok": True, "command_class": kind, "argv": args}, indent=2))
    return 0


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