1
0
Files
PPTX/openspec/changes/archive/2026-03-02-refactor-cli-args/proposal.md
lanyuanxiaoyao 66472cbd86 refactor: restructure CLI with clear subcommand architecture
重构命令行接口,建立清晰的子命令架构,提升用户体验和代码可维护性。

主要变更:
- 移除传统模式,统一使用子命令架构(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 任务完成)
2026-03-02 18:47:50 +08:00

38 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Why
当前 CLI 结构存在混乱双模式解析子命令模式和传统模式增加了代码复杂度preview 作为 convert 的一个标志导致职责不清晰。需要建立清晰的子命令架构,提升用户体验和代码可维护性。
## What Changes
- **BREAKING**: 移除传统模式(直接 `yaml2pptx.py input.yaml output.pptx`),统一使用子命令模式
- **BREAKING**: 将 preview 从 convert 的 `--preview` 标志独立为 `preview` 子命令
- 重命名参数:`--no-check``--skip-validation`(更清晰的语义)
- 新增 `--force/-f` 参数convert 命令支持强制覆盖已存在文件
- 新增 `--host` 参数preview 命令支持配置主机地址(支持局域网预览)
- 新增 `--no-browser` 参数preview 命令支持不自动打开浏览器
- 优化 `--port` 默认值:从固定 5000 改为随机端口30000-40000
- 简化参数:移除不必要的 `--verbose``--quiet``--strict``--format``--no-watch` 等参数
## Capabilities
### New Capabilities
- `cli-interface`: 命令行接口规范,定义 check、convert、preview 三个子命令的参数、行为和交互方式
### Modified Capabilities
- `browser-preview-server`: 预览服务器的启动方式和参数配置发生变化,从 convert 的标志变为独立子命令,新增 host、no-browser 等配置选项
## Impact
**受影响的代码:**
- `yaml2pptx.py`:完全重构参数解析逻辑,移除双模式支持
- `preview/server.py`:修改 `start_preview_server` 函数签名,支持 host 和 open_browser 参数
**破坏性变更:**
- 用户需要从传统模式迁移到子命令模式
- 使用 `convert --preview` 的用户需要改用 `preview` 子命令
**文档更新:**
- `README.md`:更新所有使用示例和命令行选项说明