#!/usr/bin/env python3
"""
修改指定目录下所有 .md 文件中的占位符：
- {{培训助手}} -> qa_name
- {{知识库管理员}} -> admin_name
仅处理目标目录本身，不递归子文件夹。
"""

import argparse
from pathlib import Path


def update_md_in_dir(
    dir_path: str | Path,
    qa_name: str = "培训助手",
    admin_name: str = "培训管理员",
) -> int:
    """
    修改指定目录下所有 .md 文件中的占位符（仅该目录，不含子文件夹）。
    返回 0 成功，1 目录不存在，2 读写文件失败。
    """
    root = Path(dir_path)
    if not root.is_dir():
        print(f"错误：目录不存在 {root}")
        return 1

    md_files = [f for f in root.iterdir() if f.is_file() and f.suffix == ".md"]
    if not md_files:
        print(f"在 {root} 下未找到 .md 文件")
        return 0

    replacements = [
        ("{{培训助手}}", qa_name),
        ("{{知识库管理员}}", admin_name),
    ]

    for path in md_files:
        try:
            text = path.read_text(encoding="utf-8")
        except OSError as e:
            print(f"错误：无法读取 {path}：{e}")
            return 2
        original = text
        for old, new in replacements:
            text = text.replace(old, new)
        if text != original:
            try:
                path.write_text(text, encoding="utf-8")
            except OSError as e:
                print(f"错误：无法写入 {path}：{e}")
                return 2
            print(f"已更新: {path}")
        else:
            print(f"无需修改: {path}")

    return 0


def main():
    parser = argparse.ArgumentParser(description="替换 .md 文件中的占位符")
    parser.add_argument("--qa-name", default="培训助手", help="替换 {{培训助手}} 的值")
    parser.add_argument("--admin-name", default="培训管理员", help="替换 {{知识库管理员}} 的值")
    parser.add_argument(
        "--dir",
        default="/home/node/.openclaw/workspace-training",
        help="要处理的目录路径（仅该目录下的 .md，不含子目录）",
    )
    args = parser.parse_args()
    return update_md_in_dir(args.dir, qa_name=args.qa_name, admin_name=args.admin_name)


if __name__ == "__main__":
    exit(main())
