Add core Python script (yaml2pptx.py) for converting YAML to PowerPoint: - Element rendering: text, image, shape, table, chart - Template system with placeholders - PPTX generation with python-pptx OpenSpec workflow setup: - 3 archived changes: browser-preview, template-dir-cli, yaml-to-pptx - 7 main specifications covering all core modules - Config and documentation structure 30 files changed, 4984 insertions(+)
2.1 KiB
2.1 KiB
Why
当前脚本默认使用相对路径 templates_dir='templates' 加载模板,这限制了脚本的可移植性——脚本只能在包含 templates 目录的项目根目录下运行。为了让脚本可以在任何位置使用,需要支持通过命令行参数明确指定模板目录,并移除隐式的默认行为。
What Changes
- 添加
--template-dir命令行参数,允许用户指定模板文件目录 - BREAKING: 移除默认模板目录行为,使用模板时必须通过
--template-dir明确指定模板目录 - 添加模板名称验证,禁止在模板名称中使用路径分隔符(
/或\),确保模板只能从指定目录的一层加载 - 改进错误提示信息,明确告知用户模板查找位置和失败原因
- 不使用模板的纯自定义幻灯片不受影响,无需指定
--template-dir
Capabilities
New Capabilities
template-directory-cli: 支持通过命令行参数指定模板目录,包括参数解析、路径验证、错误提示
Modified Capabilities
template-system: 修改模板加载逻辑,从硬编码的templates/目录改为必须明确指定的目录;添加模板名称验证规则
Impact
代码影响:
Template.__init__方法(184行):修改模板路径解析逻辑,添加名称验证Presentation.__init__方法(610行):移除默认 templates_dir 参数parse_args函数(756行):添加--template-dir参数定义main函数(775行):传递 template_dir 参数给 Presentation
用户影响:
- 破坏性变更: 现有使用模板的用户必须在命令行添加
--template-dir参数 - 不使用模板的用户不受影响
- 脚本可以在任何位置运行,不再依赖特定的目录结构
示例:
# 之前(只能在项目根目录运行)
uv run yaml2pptx.py presentation.yaml
# 之后(可以在任何位置运行,但使用模板时必须指定目录)
uv run yaml2pptx.py presentation.yaml --template-dir ./templates
uv run yaml2pptx.py presentation.yaml --template-dir /path/to/templates