重构命令行接口,建立清晰的子命令架构,提升用户体验和代码可维护性。 主要变更: - 移除传统模式,统一使用子命令架构(check/convert/preview) - 将 preview 从 convert 的标志独立为子命令,职责分离 - 重命名参数:--no-check → --skip-validation - 新增 --force/-f:convert 命令支持强制覆盖已存在文件 - 新增 --host:preview 命令支持配置主机地址(局域网预览) - 新增 --no-browser:preview 命令支持不自动打开浏览器 - 优化 --port 默认值:从固定端口改为随机端口(30000-40000) 破坏性变更: - 不再支持传统模式(yaml2pptx.py input.yaml output.pptx) - convert 命令不再支持 --preview 参数,需使用 preview 子命令 文档更新: - 更新 README.md 和 README_DEV.md 的所有使用示例 - 更新命令行选项说明表格 - 新增 CLI 接口规范文档 OpenSpec: - 创建 cli-interface 规范(新能力) - 更新 browser-preview-server 规范(修改的能力) - 归档 refactor-cli-args change(45/45 任务完成)
3.3 KiB
3.3 KiB
1. 重构参数解析逻辑
- 1.1 移除
parse_args()中的双模式检查逻辑(删除sys.argv[1]检查) - 1.2 使用
subparsers.add_parser()创建 check 子命令解析器 - 1.3 使用
subparsers.add_parser()创建 convert 子命令解析器 - 1.4 使用
subparsers.add_parser()创建 preview 子命令解析器 - 1.5 为 convert 子命令添加
--force/-f参数 - 1.6 将 convert 子命令的
--no-check重命名为--skip-validation - 1.7 移除 convert 子命令的
--preview和--port参数 - 1.8 为 preview 子命令添加
--port、--host、--no-browser参数
2. 更新 convert 命令处理逻辑
- 2.1 从
handle_convert()中移除 preview 相关逻辑 - 2.2 在
handle_convert()中添加输出文件存在性检查 - 2.3 实现
--force参数逻辑(已存在文件时检查是否有 --force) - 2.4 更新
--skip-validation参数的处理(原 --no-check)
3. 创建 preview 命令处理逻辑
- 3.1 创建
handle_preview()函数 - 3.2 实现随机端口生成逻辑(30000-40000 范围)
- 3.3 处理
--port参数(用户指定时使用指定端口) - 3.4 处理
--host参数(默认 127.0.0.1) - 3.5 处理
--no-browser参数(控制是否自动打开浏览器) - 3.6 调用
start_preview_server()并传递新参数
4. 更新预览服务器模块
- 4.1 修改
start_preview_server()函数签名,添加host参数 - 4.2 修改
start_preview_server()函数签名,添加open_browser参数 - 4.3 更新 Flask 服务器启动逻辑,使用传入的
host参数 - 4.4 更新浏览器自动打开逻辑,根据
open_browser参数决定是否打开 - 4.5 移除或更新端口随机生成逻辑(现在由调用方处理)
5. 更新主函数路由逻辑
- 5.1 更新
main()函数,根据args.command路由到对应的处理函数 - 5.2 确保 check 命令路由到
handle_check() - 5.3 确保 convert 命令路由到
handle_convert() - 5.4 确保 preview 命令路由到
handle_preview() - 5.5 移除传统模式的兼容逻辑(
args.command is None的处理)
6. 更新文档
- 6.1 更新 README.md 中的"快速开始"部分,移除传统模式示例
- 6.2 更新 README.md 中的"实时预览"部分,使用
preview子命令 - 6.3 更新 README.md 中的"命令行选项"表格,反映新的参数结构
- 6.4 更新 README.md 中的所有使用示例
- 6.5 更新
yaml2pptx.py文件顶部的 docstring 使用说明
7. 测试验证
- 7.1 测试 check 子命令基本功能
- 7.2 测试 check 子命令的 --template-dir 参数
- 7.3 测试 convert 子命令基本功能(自动生成输出文件名)
- 7.4 测试 convert 子命令指定输出文件名
- 7.5 测试 convert 子命令的 --force 参数(覆盖已存在文件)
- 7.6 测试 convert 子命令的 --skip-validation 参数
- 7.7 测试 preview 子命令基本功能(随机端口)
- 7.8 测试 preview 子命令的 --port 参数
- 7.9 测试 preview 子命令的 --host 参数
- 7.10 测试 preview 子命令的 --no-browser 参数
- 7.11 验证输入文件不存在时的错误提示
- 7.12 验证输出文件已存在且未使用 --force 时的错误提示