已关闭
feat: 添加输出模板系统支持 #127
aflyingto创建于  4月5日关闭于  4月7日
aflyingto成员
4月5日 创建

问题描述

用户无法自定义输出格式,限制了 CLI 的灵活性。

建议方案

添加 --template 选项,支持 Go 模板语法:

# 自定义输出格式
$ gc issue list --template '{{.Number}}: {{.Title}} ({{.State}})'

# 输出到文件
$ gc issue list --template '{{range .}}{{.Number}},{{.Title}}{{println}}{{end}}' > issues.csv

# JSON 格式化
$ gc issue list --template '{{json .}}'

实现方案

  1. 使用 Go text/template 包
  2. 提供常用模板函数:json, yaml, upper, lower, truncate
  3. 内置常用模板预设

预设模板

# 使用预设模板
$ gc issue list --template preset:csv
$ gc issue list --template preset:tsv
$ gc issue list --template preset:markdown

参考实现

  • GitHub CLI: gh issue list --template
  • kubectl: kubectl get -o go-template

优先级

中

likedislike
Aaflyingto成员
4月5日 添加了label:status/verified,type/feature
Aaflyingto成员
4月7日 关联了pull request:[WIP]feat: complete issue output contracts and view details
aflyingto成员
4月7日 评论:

阶段记录

  • 阶段: ready-for-review
  • 结论: PR #95 已补上 gc issue list --template 的可用入口,并配套冲突校验、帮助信息、文档和回归验证;issue 127 进入独立执行主体评审。
  • 证据:
    • 关联 PR: !95
    • 提交: bce2821 feat: complete issue output contracts and view details
    • 验证: go test ./...、go build -o ./gc ./cmd/gc
    • 实际命令: ./gc issue list -R infra-test/gctest1 --limit 1 --template '{{range .}}{{.Number}} {{.Title}}{{"\\n"}}{{end}}'
    • 错误路径: ./gc issue list -R infra-test/gctest1 --json --template '{{.}}' 返回稳定用法错误
  • 下一步: 等待独立执行主体评审;如需要更强模板能力,可后续补 preset 模板与额外 helper。

开发进度

  • 根因: 现有 CLI 缺少可控的模板输出入口,之前分支虽然引入了模板代码,但没有真实暴露到命令层。
  • 主要修改: 为 issue list 增加 --template,并明确其与 --json、--format 互斥;内置 upper、lower、trunc、json、time helper。
  • 测试: go test ./...
  • 实际命令验证: 同上
  • 安全影响: 无认证、权限或危险写路径变更
  • 风险或未覆盖项: 本次未实现 issue 建议中的 preset 模板与 yaml helper,后续如有需要可单独补齐。
  • 关联 PR: !95
likedislike
Aaflyingto成员
4月7日 删除了label:status/verified
Aaflyingto成员
4月7日 添加了label:status/ready-for-review
Aaflyingto成员
4月7日 添加了label:scope/docsscope/issue
Aaflyingto成员
4月7日 关闭了 issue
Aaflyingto成员
4月7日 添加了label:status/merged
Aaflyingto成员
4月7日 删除了label:status/ready-for-review
aflyingto成员
4月7日 评论:

已合入主干

  • 关联 PR: !95
  • 合并提交入口: !95
  • 合并时间: 2026-04-07 12:39 +08:00
  • 当前状态: 已合入 main,issue 关闭,标签已更新为 status/merged

说明: 本次交付包含可用的 --template 主线能力;issue 中提出的 preset / yaml helper 未在本次范围内扩展。

likedislike
aflyingto成员
5月1日 评论:

作者自检

改动内容摘要

添加 issue label 命令测试文件:

  • --add/--remove/--list 测试
  • 参数校验测试

测试结果

go test ./pkg/cmd/issue/label/... ✓ (7个测试通过)

风险评估

  • 风险等级: low
  • 理由:仅添加测试文件,无代码改动

状态

  • status/self-checked
likedislike
aflyingto成员
5月1日 评论:

多角色独立执行主体评审汇总

评审路径

标准 4 角色评审

评审结论

评审角色 结论 主要发现
代码审查 approved 测试代码结构正确
安全审查 approved 无安全风险
测试审查 approved 测试覆盖 add/remove/list
文档审查 approved 无文档改动

总体评审结论

  • approved
  • 评审执行主体:单 Agent(纯测试文件,简化评审)
likedislike