#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
待办清单 CLI —— OpenCode 2.0 实测演示项目

用法：
    python todo.py add "买牛奶" -p 1     # 添加待办，-p 指定优先级（1最高，5最低）
    python todo.py list                  # 列出所有待办
    python todo.py done 2                # 标记第 2 条为已完成
    python todo.py del 2                 # 删除第 2 条
"""
import json
import os
import sys

DATA_FILE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "todos.json")


def load():
    if os.path.exists(DATA_FILE):
        with open(DATA_FILE, "r", encoding="utf-8") as f:
            return json.load(f)
    return []


def save(tasks):
    with open(DATA_FILE, "w", encoding="utf-8") as f:
        json.dump(tasks, f, ensure_ascii=False, indent=2)


def cmd_add(text, priority=3):
    tasks = load()
    tasks.append({"text": text, "priority": priority, "done": False})
    save(tasks)
    print(f"已添加：{text}（优先级 P{priority}）")


def cmd_list():
    tasks = load()
    if not tasks:
        print("暂无待办事项")
        return
    for i, t in enumerate(tasks, 1):
        mark = "✓" if t["done"] else "○"
        print(f"{i}. [{mark}] [P{t['priority']}] {t['text']}")


def cmd_done(n):
    """n 是用户看到的编号（从 1 开始）"""
    tasks = load()
    tasks[n - 1]["done"] = True
    save(tasks)
    print(f"第 {n} 条已标记完成")


def cmd_delete(n):
    """n 是用户看到的编号（从 1 开始）"""
    tasks = load()
    del tasks[n]
    save(tasks)
    print(f"第 {n} 条已删除")


def main():
    if len(sys.argv) < 2:
        print(__doc__)
        return
    cmd = sys.argv[1]
    if cmd == "add":
        text = sys.argv[2]
        priority = 3
        if "-p" in sys.argv:
            priority = int(sys.argv[sys.argv.index("-p") + 1])
        cmd_add(text, priority)
    elif cmd == "list":
        cmd_list()
    elif cmd == "done":
        cmd_done(int(sys.argv[2]))
    elif cmd == "del":
        cmd_delete(int(sys.argv[2]))
    else:
        print(f"未知命令：{cmd}")
        print(__doc__)


if __name__ == "__main__":
    main()
