05 · Automation
让输出进入管道,同时保留失败语义
使用 JSON、非交互确认、环境变量和 revision,把人工流程逐步变成可审计脚本。
结构化输出
$posts = blog post list --status draft --json | ConvertFrom-Json
$posts.items | Select-Object id,title,status只把 stdout 送进 JSON 解析器;错误仍在 stderr,命令失败时检查 $LASTEXITCODE。
blog post list --status draft --json | jq -r '.items[] | [.id, .title] | @tsv'
test ${PIPESTATUS[0]} -eq 0管道中不仅要检查最后一个程序,也要检查 blog 本身是否成功。
非交互写操作
blog post publish 42 --dry-run
blog post publish 42 --yes没有 TTY 且操作需要确认时,CLI 会失败而不是挂起。--yes 是显式承担副作用,不是通用“强制成功”。
处理 409 冲突
- 停止重试同一个 update;409 表示前提已经变化,不是瞬时网络错误。
- 重新执行
blog post pull <id> remote.md获取新快照。 - 用编辑器或 diff 工具把本地修改合并到新快照。
- 再次
validate、diff,然后带说明执行update。 - 需要恢复旧内容时先查看
versions,再显式rollback。