よくあるやつ。
Google が Go 用の GitHub クライアントを公開しているのでそれを利用する
プロジェクト作成
go mod init
で作成。
go mod init github.com/mikoto2000/TIL/golang/github/go-github/firststep
ライブラリ追加
go get
で追加。
go get github.com/google/go-github/v62
実装
コマンドライン引数にユーザー名とリポジトリを受け取り、そのリポジトリの latest タグを返却する。
■ main.go
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/google/go-github/v62/github"
)
/**
* コマンドライン引数のひとつ目にユーザー名、ふたつ目にリポジトリ名を渡す。
*
* latest タグの取得に成功した場合、タグ名を標準出力へ出力する。
* latest タグの取得に失敗した場合、エラーを出力し、終了コード 1 で終了する。
*/
func main() {
:= context.Background()
ctx := github.NewClient(nil)
client
:= os.Args[1]
owner := os.Args[2]
repo
, _, err := client.Repositories.GetLatestRelease(ctx, owner, repo)
releaseif err != nil {
.Fatalf("Error getting latest release: %v", err)
log}
.Printf("%s\n", release.GetTagName())
fmt}
動作確認
ぱっと見取得できているように見える。
$ ./firststep mikoto2000 devcontainer.vim
v0.6.1
$ ./firststep mikoto2000 devcontainer.vima
2024/05/24 03:13:10 Error getting latest release: GET https://api.github.com/repos/mikoto2000/devcontainer.vima/releases/latest: 404 Not Found []
以上。
参考資料
- google/go-github: Go library for accessing the GitHub v3 API
- type Client - github package - github.com/google/go-github/v62/github - Go Packages
- type RepositoriesService - github package - github.com/google/go-github/v62/github - Go Packages
- func (*RepositoriesService) GetLatestRelease - github package - github.com/google/go-github/v62/github - Go Packages
0 件のコメント:
コメントを投稿