はじめに
こんにちは。インフラエンジニアレベル1のf_prgです。
go言語の管理ツールのgom(Go Manager)を使ってみようと思います。
gomのセットアップをします
goコマンドのgetでセットアップします。
[f_prg@gom] $ go get github.com/mattn/gom
確認してみます。
[f_prg@Documents] $ which gom /Users/f_prg/.goenv/shims/gom
Gomfileを作成します
[f_prg@gom] $ gom gen gomfile [f_prg@gom] $ ls Gomfile [f_prg@gom] $ vim Gomfile [f_prg@gom] $ cat Gomfile gom "github.com/mitchellh/gox"
パッケージをインストールします
[f_prg@gom] $ gom install downloading github.com/mitchellh/gox [f_prg@gom] $ ls Gomfile _vendor
main.goファイルを用意します
[f_prg@gom] $ cat main.go package main import "fmt" func main() { fmt.Println("Hello, Gom") }
パッケージを使って、実行してみます
Goxパッケージを使ってみました。
[f_prg@gom] $ gom exec gox -build-toolchain The toolchain build can't be parallelized because compiling a single Go source directory can only be done for one platform at a time. Therefore, the toolchain for each platform will be built one at a time. --> Toolchain: darwin/386 --> Toolchain: darwin/amd64 --> Toolchain: linux/386 --> Toolchain: linux/amd64 --> Toolchain: linux/arm --> Toolchain: freebsd/386 --> Toolchain: freebsd/amd64 --> Toolchain: openbsd/386 --> Toolchain: openbsd/amd64 --> Toolchain: windows/386 --> Toolchain: windows/amd64 --> Toolchain: freebsd/arm --> Toolchain: netbsd/386 --> Toolchain: netbsd/amd64 --> Toolchain: netbsd/arm --> Toolchain: plan9/386 [f_prg@gom] $ gom exec gox Number of parallel builds: 4 --> darwin/386: _/Users/f_prg/Documents/dev/gom --> darwin/amd64: _/Users/f_prg/Documents/dev/gom --> linux/386: _/Users/f_prg/Documents/dev/gom --> linux/amd64: _/Users/f_prg/Documents/dev/gom --> linux/arm: _/Users/f_prg/Documents/dev/gom --> freebsd/386: _/Users/f_prg/Documents/dev/gom --> freebsd/amd64: _/Users/f_prg/Documents/dev/gom --> openbsd/386: _/Users/f_prg/Documents/dev/gom --> openbsd/amd64: _/Users/f_prg/Documents/dev/gom --> windows/386: _/Users/f_prg/Documents/dev/gom --> windows/amd64: _/Users/f_prg/Documents/dev/gom --> freebsd/arm: _/Users/f_prg/Documents/dev/gom --> netbsd/386: _/Users/f_prg/Documents/dev/gom --> netbsd/amd64: _/Users/f_prg/Documents/dev/gom --> netbsd/arm: _/Users/f_prg/Documents/dev/gom --> plan9/386: _/Users/f_prg/Documents/dev/gom [f_prg@gom] $ ls Gomfile gom_linux_386 gom_openbsd_amd64 _vendor gom_linux_amd64 gom_plan9_386 gom_darwin_386 gom_linux_arm gom_windows_386.exe gom_darwin_amd64 gom_netbsd_386 gom_windows_amd64.exe gom_freebsd_386 gom_netbsd_amd64 main.go gom_freebsd_amd64 gom_netbsd_arm gom_freebsd_arm gom_openbsd_386
goxで生成された実行ファイルを実行してみます
[f_prg@gom] $ ./gom_darwin_amd64 Hello, Gom
まとめ
rubyのbundlerと同様のように、パッケージ管理が簡単になります。
補足、おまけ
https://github.com/mattn/gom
に従うとエラーをしておりました。
サイトに従って作成して用意します。
gom 'github.com/mattn/go-runewidth', :tag => 'go1' gom 'github.com/mattn/go-scan', :commit => 'ecb144fb1f2848a24ebfdadf8e64380406d87206' # Execute only in the "test" environment. group :test do gom 'github.com/mattn/go-sqlite3' end # Execute only for the "custom_group" group. group :custom_group do gom 'github.com/golang/lint/golint' end
サイト上では
gom 'github.com/mattn/go-runewidth', :tag => 'go1'
となってましたが、tagがないようなので
gom 'github.com/mattn/go-runewidth'
としました。