跳转到内容

cnb-rs pr comment

cnb-rs pr comment <NUMBER> [flags]

在 PR 上添加一条评论;或用 --edit-last 编辑当前用户在该 PR 上的最近一条评论。借鉴 gh pr comment 的设计:单命令 + flag,不开 4 个 CRUD 子命令组(issue comment 走的路线)。

列举评论 / 查看单条评论:留给后续 pr view --comments(P2 阶段实现)。CLI 上单独查一条评论的场景罕见,列举走 view 扩展即可。

CNB API 没有 delete_pull_comment,所以本命令不提供 --delete-last(与 gh pr comment 略有不同)。

选项

  • <NUMBER>:PR 编号(必填)
  • -b, --body <BODY>:评论正文;与 --body-file 互斥
  • -F, --body-file <FILE>:从文件读评论正文;- 表示从 stdin 读;与 --body 互斥
  • --edit-last:编辑当前用户在该 PR 上最近一条评论(按 created_at 取最新),找不到则报错

至少需要传 -b-F 之一,否则报错(--edit-last 单独使用也需要给新 body)。

继承的全局选项:

  • --repo <REPO>:指定仓库路径(格式:group/repo
  • --domain <DOMAIN>:指定目标域名(默认:cnb.cool

输出约定

  • stderr
    • 新增:✓ 已在 PR #N 上发表评论 (id=...)
    • 编辑:✓ 已编辑 PR #N 上的评论 (id=...)
  • stdout:PR URL(CNB Web 端评论锚点 URL 格式没在 API 暴露,先只给 PR URL,与其它 pr 命令一致)

示例

bash
# 添加一条评论
$ cnb-rs pr comment 42 -b "LGTM,可以合"
 已在 PR #42 上发表评论 (id=2055934518850809856)
https://cnb.cool/org/repo/-/pulls/42

# 从文件读 body(适合多行 markdown)
$ cnb-rs pr comment 42 -F review.md

# 从 stdin 读(适合 pipe)
$ echo "ship it" | cnb-rs pr comment 42 -F -

# 编辑当前用户最近一条评论(typo 补救常用)
$ cnb-rs pr comment 42 --edit-last -b "(edited) LGTM,建议把 X 改成 Y 再合"
 已编辑 PR #42 上的评论 (id=2055934518850809856)
https://cnb.cool/org/repo/-/pulls/42

# 不传 body 报错(exit 1)
$ cnb-rs pr comment 42
错误: 请通过 -b/--body -F/--body-file 提供评论正文

API 调用

模式API方法说明
新增${API}/repos/{repo}/-/pulls/{n}/commentsPOST默认行为
--edit-last 找最近一条${API}/user + ${API}/repos/{repo}/-/pulls/{n}/commentsGET × 2tokio::join! 并发拿当前用户 + 评论列表
--edit-last patch${API}/repos/{repo}/-/pulls/{n}/comments/{cid}PATCH命中最近一条后编辑

--edit-last 总共 3 个 API 调用,前两个并发。

关联命令

pr close / pr reopen 也接受 -c "评论" 选项,在状态变更前先发评论,参考各自文档。pr comment 是独立的「只发评论」命令,不切状态。

另请参阅

Released under the MIT License.