✨ feat(playbook): add install_mode deployment config
BREAKING CHANGE: [vendor] and playbook.deploy_root are no longer supported. Use [playbook].install_mode and playbook.playbook_root instead.
This commit is contained in:
@@ -58,6 +58,8 @@ python scripts/playbook.py -config playbook.toml
|
||||
```toml
|
||||
[playbook]
|
||||
project_root = "/path/to/project"
|
||||
playbook_root = "docs/standards/playbook"
|
||||
install_mode = "snapshot"
|
||||
|
||||
[sync_rules]
|
||||
# force = true # 可选
|
||||
@@ -81,12 +83,12 @@ project_name = "MyProject"
|
||||
|
||||
```bash
|
||||
# spec 写完后
|
||||
python <deploy_root>/scripts/playbook.py \
|
||||
python <playbook_root>/scripts/playbook.py \
|
||||
-record-spec docs/superpowers/specs/<topic>-design.md \
|
||||
-progress memory-bank/progress.md
|
||||
|
||||
# plan 写完后
|
||||
python <deploy_root>/scripts/playbook.py \
|
||||
python <playbook_root>/scripts/playbook.py \
|
||||
-record-plan docs/superpowers/plans/<topic>.md \
|
||||
-progress memory-bank/progress.md
|
||||
```
|
||||
@@ -199,10 +201,11 @@ TSL 相关问题直接查阅 `rulesets/tsl/index.md` 与 `docs/tsl/`。
|
||||
先区分三个路径概念:
|
||||
|
||||
- `project_root`:目标项目根目录。
|
||||
- `deploy_root`:相对于 `project_root` 的项目内目标目录。
|
||||
- 外部 clone 出来的 Playbook 路径(如 `/opt/playbook`):只是执行部署脚本的位置,不是部署目标。
|
||||
- `playbook_root`:相对于 `project_root` 的项目内 Playbook 根目录。
|
||||
- `install_mode`:`subtree` 表示 Playbook 已由 git subtree 放在项目内;`snapshot` 表示从外部 clone 安装裁剪快照。
|
||||
- 外部 clone 出来的 Playbook 路径(如 `/opt/playbook`):只是执行安装脚本的位置,不是项目内 Playbook 根目录。
|
||||
|
||||
以 TSL 为例,Playbook 在项目内的默认部署根是 `docs/standards/playbook`;如果你把 `deploy_root` 改成 `custom/playbook`,则部署结果会落到 `<project_root>/custom/playbook`,文档和脚本入口也会跟着变成 `custom/playbook/docs/...`、`custom/playbook/scripts/...`。
|
||||
以 TSL 为例,Playbook 在项目内的默认根是 `docs/standards/playbook`;如果你把 `playbook_root` 改成 `custom/playbook`,则快照会落到 `<project_root>/custom/playbook`,文档和脚本入口也会跟着变成 `custom/playbook/docs/...`、`custom/playbook/scripts/...`。
|
||||
|
||||
#### 方式一:`git subtree`
|
||||
|
||||
@@ -214,6 +217,8 @@ git subtree add --prefix docs/standards/playbook https://git.mytsl.cn/csh/playbo
|
||||
cat <<'EOF' > playbook.toml
|
||||
[playbook]
|
||||
project_root = "."
|
||||
playbook_root = "docs/standards/playbook"
|
||||
install_mode = "subtree"
|
||||
|
||||
[sync_standards]
|
||||
langs = ["tsl"]
|
||||
@@ -249,6 +254,8 @@ git commit -m ":package: deps(playbook): add tsl standards"
|
||||
# playbook.toml
|
||||
[playbook]
|
||||
project_root = "."
|
||||
playbook_root = "docs/standards/playbook"
|
||||
install_mode = "subtree"
|
||||
|
||||
[sync_standards]
|
||||
langs = ["tsl", "cpp"]
|
||||
@@ -277,19 +284,17 @@ git commit -m ":package: deps(playbook): add tsl standards"
|
||||
git clone https://git.mytsl.cn/csh/playbook.git /opt/playbook
|
||||
```
|
||||
|
||||
2. 在目标项目根创建 `playbook.toml`,并用 `deploy_root` 指定项目内的部署根。例如:
|
||||
|
||||
2. 在目标项目根创建 `playbook.toml`,并用 `playbook_root` 指定项目内的 Playbook 根。例如:
|
||||
- `project_root` 写目标项目根目录。
|
||||
- `deploy_root` 写目标项目内的相对路径。
|
||||
- 不要把外部 clone 的路径(如 `/opt/playbook`)写进 `deploy_root`;那只是你执行脚本的位置。
|
||||
- `playbook_root` 写目标项目内的相对路径。
|
||||
- `install_mode = "snapshot"` 表示由外部 clone 安装项目内快照。
|
||||
- 不要把外部 clone 的路径(如 `/opt/playbook`)写进 `playbook_root`;那只是你执行脚本的位置。
|
||||
|
||||
```toml
|
||||
[playbook]
|
||||
project_root = "."
|
||||
deploy_root = "custom/playbook"
|
||||
|
||||
[vendor]
|
||||
langs = ["tsl"]
|
||||
playbook_root = "custom/playbook"
|
||||
install_mode = "snapshot"
|
||||
|
||||
[sync_standards]
|
||||
langs = ["tsl"]
|
||||
@@ -308,10 +313,10 @@ git commit -m ":package: deps(playbook): add tsl standards"
|
||||
|
||||
说明:
|
||||
|
||||
- 这里的 `[vendor]` 是“把 Playbook 快照部署进目标项目”的执行步骤,不是第三种正式部署路线。
|
||||
- `deploy_root` 永远表示目标项目内的部署目录;它不是外部 clone 出来的 Playbook 仓库路径。
|
||||
- 外部 clone 场景下必须显式填写 `deploy_root`;脚本不会替你补默认部署目录。
|
||||
- 如果 `deploy_root = "custom/playbook"`,部署后的项目内入口会是 `custom/playbook/scripts/playbook.py`、`custom/playbook/docs/index.md`。
|
||||
- `install_mode = "snapshot"` 会先把 Playbook 裁剪快照安装到目标项目的 `playbook_root`,再执行后续同步动作。
|
||||
- `playbook_root` 永远表示目标项目内的 Playbook 根;它不是外部 clone 出来的 Playbook 仓库路径。
|
||||
- 外部 clone 场景下必须显式填写 `playbook_root`;脚本不会替你补默认项目内根目录。
|
||||
- 如果 `playbook_root = "custom/playbook"`,部署后的项目内入口会是 `custom/playbook/scripts/playbook.py`、`custom/playbook/docs/index.md`。
|
||||
|
||||
---
|
||||
|
||||
@@ -347,7 +352,7 @@ git commit -m ":package: deps(playbook): add tsl standards"
|
||||
├── .gitattributes # 行尾/文本规范
|
||||
├── AGENTS.md # Codex 入口(由 playbook 自动生成/更新)
|
||||
├── CLAUDE.md # Claude Code 入口(自动注入 @AGENTS.md)
|
||||
├── <deploy_root>/ # 本 Playbook 在项目内的部署根(默认 docs/standards/playbook)
|
||||
├── <playbook_root>/ # 本 Playbook 在项目内的根(默认 docs/standards/playbook)
|
||||
│ ├── docs/
|
||||
│ ├── rulesets/
|
||||
│ ├── scripts/
|
||||
|
||||
Reference in New Issue
Block a user