Goを使っていると、ある日突然に日頃使っていたコマンドが全く違う何かに置き換えられていたりして、驚くことがあります。
$GOPATH/bin
の下に色々入ってはいるものの、どこの誰かは名前だけではわかりません。
結論
シェルスクリプト
go list
を使って、インストールパッケージパス一覧を出してみます。
go list -f "{{if eq \"${GOPATH}/bin/\" (printf \"%.$((${#GOPATH}+5))s\" .Target)}}{{.Target}},{{.ImportPath}}{{end}}" all
結果サンプル
パス見てみると、 vendor
とか、 examples
とか、ちらほらと治安悪いですね。
examples/.../server
は鬼畜の所業としか思えないですね。(またgo-swaggerか…)
/Users/user/go/bin/toml-test-decoder,github.com/BurntSushi/toml/cmd/toml-test-decoder
/Users/user/go/bin/toml-test-encoder,github.com/BurntSushi/toml/cmd/toml-test-encoder
/Users/user/go/bin/tomlv,github.com/BurntSushi/toml/cmd/tomlv
/Users/user/go/bin/go-symbols,github.com/acroca/go-symbols
/Users/user/go/bin/gometalinter,github.com/alecthomas/gometalinter
/Users/user/go/bin/codegen,github.com/alecthomas/gometalinter/vendor/github.com/nicksnyder/go-i18n/i18n/language/codegen
/Users/user/go/bin/embedi18n,github.com/alecthomas/gometalinter/vendor/gopkg.in/alecthomas/kingpin.v3-unstable/cmd/embedi18n
/Users/user/go/bin/genvalues,github.com/alecthomas/gometalinter/vendor/gopkg.in/alecthomas/kingpin.v3-unstable/cmd/genvalues
/Users/user/go/bin/gotests,github.com/cweill/gotests/gotests
/Users/user/go/bin/gomodifytags,github.com/fatih/gomodifytags
/Users/user/go/bin/motion,github.com/fatih/motion
/Users/user/go/bin/swagger,github.com/go-swagger/go-swagger/cmd/swagger
/Users/user/go/bin/server,github.com/go-swagger/go-swagger/examples/2.0/petstore/server
/Users/user/go/bin/petstore-server,github.com/go-swagger/go-swagger/examples/generated/cmd/petstore-server
/Users/user/go/bin/countdown-server,github.com/go-swagger/go-swagger/examples/stream-server/cmd/countdown-server
/Users/user/go/bin/agg,github.com/go-swagger/go-swagger/vendor/github.com/kr/text/cmd/agg
/Users/user/go/bin/mc,github.com/go-swagger/go-swagger/vendor/github.com/kr/text/mc
/Users/user/go/bin/cmd,github.com/go-swagger/go-swagger/vendor/github.com/pelletier/go-toml/cmd
/Users/user/go/bin/tomljson,github.com/go-swagger/go-swagger/vendor/github.com/pelletier/go-toml/cmd/tomljson
/Users/user/go/bin/tomll,github.com/go-swagger/go-swagger/vendor/github.com/pelletier/go-toml/cmd/tomll
解説
追記予定
余談
server
という python -m SimpleServer
をちょっと拡張しただけのシェルを自作で使っていたのですが、いつのまにか使えなくなってしまい、 which server
としてみたところ、 ~/go/bin/server
が返ってきてなんじゃこりゃと思ったり…割と怖い話。
追記予定
- package mainを迂闊に書くべきじゃない
- sampleならsampleのタグを入れるといいかも?
// +build sample
- その辺ガイドライン的なものは無いのか
$PATH
に$GOPATH/bin
を入れるべきではないかもしれない