@deeeetさんが開発して話題のgo-latestを早速使ってみた.
go-latestはGitHubのタグなどと比較して,使用中のツールが最新版かチェックすることができる.
今回はGo製Sensu CLIのohgiに入れて使ってみた.
go-latestの使い方
go get
でインストールして,ohgiのversion
コマンドに組み込んでみた.
main.go
からはohgi.Version("v0.1.0")
のように呼び出す.
package ohgi
import (
"fmt"
"github.com/tcnksm/go-latest"
)
func Version(version string) string {
var result []byte
result = append(result, fmt.Sprintf("ohgi version %s\n", version)...)
fixFunc := latest.DeleteFrontV()
githubTag := &latest.GithubTag{
Owner: "hico-horiuchi",
Repository: "ohgi",
FixVersionStrFunc: fixFunc,
}
res, _ := latest.Check(githubTag, fixFunc(version))
if res.Outdated {
result = append(result, fmt.Sprintf("Latest version of ohgi is %s, please update it\n", res.Current)...)
}
return string(result)
}
ここでは,latest.GithubTag
を使い,Owner
とRepository
を指定してCheck()
を実行する.
バージョンが古い場合は,res.Outdated
がtrue
になる.
(使用バージョンの方が新しいと,res.New
もtrue
になるようだ.)
res.Current
に最新のバージョンが文字列で格納されている.
便利なFixVersionStrFunc
バージョンの形式が0.1.0
ではなくv0.1.0
の場合のために,関数が用意されているようだ.
標準では何もしないが,latest.DeleteFrontV()
を使うことで,頭のv
を取り除ける.
必要なら,これをlatest.GithubTag
のFixVersionFunc
に渡してやると良いようだ.
おわりに
go-latestを使うことで,バージョンが古い場合は以下のように通知が出せるようになった.
今後,Go言語製のツールでGitHubで管理するものは,go-latestが必須になる気がする.
(更新が必要な場合は,GitHubのURLを表示すると良いかも.)
$ ohgi version
ohgi version 0.1.4
Latest version of ohgi is 0.1.5, please update it