GitHub CLI 2.0 扩展功能与 go-gh 库的发布
GitHub CLI 2.0 引入了扩展功能,允许开发者通过编写小型 Go 程序来添加新功能。为了简化扩展的创建过程,GitHub 发布了新的库 go-gh。此外,GitHub CLI 的最新版本还引入了两个新命令,用于搜索和浏览可用的扩展目录。
go-gh 库的功能与优势
go-gh 库是用 Go 语言编写的,包含了 GitHub CLI 自身使用的部分代码。GitHub 希望通过该库帮助开发者更高效地编写高质量的扩展。该库提供了多种功能,例如访问当前目录跟踪的仓库,或创建 REST、HTTP 或 GraphQL 客户端,直接向 GitHub API 发送请求。
使用 go-gh 提供的 REST、HTTP 或 GraphQL 客户端的一个优势是,它们会自动使用当前的 GitHub CLI 环境配置,从而避免开发者手动处理主机名、认证令牌、默认头信息等 API 使用的需求。如果需要自定义认证流程,也可以实现。
创建扩展与 go-gh 的集成
开发者可以使用 gh ext create 命令创建一个新扩展。该命令会初始化一个 Go 项目,并在 main.go 中生成一些样板代码,并设置为链接到 go-gh。go-gh 还尝试与 gh 命令的其他功能很好地集成,支持执行现有命令。例如,以下代码展示了如何执行 gh issue list -R cli/cli 并将其输出捕获到 stdOut 中:
args := []string{"issue", "list", "-R", "cli/cli"}
stdOut, stdErr, err := gh.Exec(args...)gh.Exec 函数在底层使用 os/exec 和 GitHub 自己的 safeexec 来提供预期的结果。
开发者资源与教程
为了帮助开发者快速上手 go-gh,GitHub 提供了一个逐步教程,描述了如何选择仓库、接受参数、与 API 通信、格式化输出等。此外,官方文档还提供了 go-gh 函数的广泛示例。
新命令:浏览与搜索扩展
GitHub CLI 2.20 引入了两个新命令,使开发者更容易发现扩展。执行 git ext browse 会显示一个文本用户界面(Terminal User Interface),用于列出和过滤扩展,以及安装或卸载它们。git ext search 是 git ext browse 的对应命令,适用于自动化和脚本编写。这是一个传统的 shell 命令,可以按照给定条件排序并输出指定数量的结果。例如,以下命令可以列出所有者是 xyz 的最近更新的十个扩展:
gh ext search --limit 10 --sort updated --owner xyz该命令可以以文本表格或 JSON 格式返回结果。
获取 go-gh
go-gh 可在 GitHub 上获取:go-gh 库。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。