GitHub CLI 的 Go 库
go-gh
是一个 Go 模块集合,旨在简化 GitHub CLI 扩展 的开发。
该库中的模块默认遵循 GitHub CLI 的约定:
-
repository.Current()
优先使用GH_REPO
环境变量的值,并在无法获取时从 git 远程配置中读取。 -
GitHub API 请求将使用与
gh
相同的认证机制,即优先使用GH_TOKEN
和GH_HOST
环境变量的值,如果无法获取则回退到用户存储的 OAuth 令牌。 -
终端功能 的确定会考虑
GH_FORCE_TTY
、NO_COLOR
、CLICOLOR
等环境变量。 -
browser
模块会启动用户首选的网络浏览器。
使用方法
有关更多信息,请参阅完整的 go-gh
参考文档
package main
import (
"fmt"
"log"
"github.com/cli/go-gh/v2"
"github.com/cli/go-gh/v2/pkg/api"
)
func main() {
// 这些示例假设已安装并认证 `gh`。
// 调用 gh 命令并读取其输出。
issueList, _, err := gh.Exec("issue", "list", "--repo", "cli/cli", "--limit", "5")
if err != nil {
log.Fatal(err)
}
fmt.Println(issueList.String())
// 使用 API 客户端获取仓库标签。
client, err := api.DefaultRESTClient()
if err != nil {
log.Fatal(err)
}
response := []struct{
Name string
}{}
err = client.Get("repos/cli/cli/tags", &response)
if err != nil {
log.Fatal(err)
}
fmt.Println(response)
}
更多使用示例请参阅 examples。
贡献
如果您觉得有任何不妥,或者认为缺少某些功能,请查看我们的 贡献指南。在那里,您可以找到有关分享反馈和提交拉取请求的说明。感谢您的参与!