#!/usr/bin/env python3
from __future__ import annotations

import json
import os
from pathlib import Path
import sys
import time


def _value_after(args: list[str], flag: str, default: str = "") -> str:
    try:
        return args[args.index(flag) + 1]
    except (ValueError, IndexError):
        return default


def _state_path() -> Path:
    raw = os.environ.get("RESEARCH_MODE_FAKE_OPENCLAW_STATE")
    if raw:
        return Path(raw)
    return Path("/tmp/research-mode-fake-openclaw-state.json")


def _read_state() -> dict[str, object]:
    path = _state_path()
    try:
        return json.loads(path.read_text(encoding="utf-8"))
    except (FileNotFoundError, json.JSONDecodeError):
        return {"jobs": {}, "removed": []}


def _write_state(state: dict[str, object]) -> None:
    path = _state_path()
    path.parent.mkdir(parents=True, exist_ok=True)
    path.write_text(json.dumps(state, indent=2), encoding="utf-8")


def main(argv: list[str]) -> int:
    if len(argv) < 2 or argv[0] != "cron":
        print("fake openclaw only supports cron commands", file=sys.stderr)
        return 2

    action = argv[1]
    rest = argv[2:]

    if action == "add":
        name = _value_after(rest, "--name", "research")
        every = _value_after(rest, "--every", "")
        unique = f"{os.getpid()}-{time.time_ns()}"
        job_id = f"fake-cron-{unique}"
        state = _read_state()
        jobs = state.setdefault("jobs", {})
        if isinstance(jobs, dict):
            jobs[job_id] = {"name": name, "every": every, "enabled": True}
        _write_state(state)
        print(
            json.dumps(
                {
                    "id": job_id,
                    "jobId": job_id,
                    "name": name,
                    "every": every,
                    "enabled": True,
                }
            )
        )
        return 0

    if action in {"disable", "enable"}:
        job_id = rest[0] if rest else ""
        state = _read_state()
        jobs = state.setdefault("jobs", {})
        removed = state.setdefault("removed", [])
        if job_id in removed or not isinstance(jobs, dict) or job_id not in jobs:
            print(f"unknown cron job id: {job_id}", file=sys.stderr)
            return 1
        job = jobs[job_id]
        if isinstance(job, dict):
            job["enabled"] = action == "enable"
        _write_state(state)
        print(
            json.dumps(
                {
                    "status": "disabled" if action == "disable" else "enabled",
                    "job_id": job_id,
                }
            )
        )
        return 0

    if action == "rm":
        job_id = rest[0] if rest else ""
        state = _read_state()
        jobs = state.setdefault("jobs", {})
        removed = state.setdefault("removed", [])
        if isinstance(jobs, dict):
            jobs.pop(job_id, None)
        if isinstance(removed, list) and job_id not in removed:
            removed.append(job_id)
        _write_state(state)
        print(json.dumps({"status": "removed", "job_id": job_id}))
        return 0

    print(f"unsupported fake openclaw cron action: {action}", file=sys.stderr)
    return 2


if __name__ == "__main__":
    raise SystemExit(main(sys.argv[1:]))
