えぞてくブログ

ITと北海道と日常と、そんな日々を綴ります

【golang】depでgoa(v2)を使おうとしたらハマった件と解決法

f:id:nagi-244:20190114201652j:plain:w600

The Go gopher was designed by Renée French.

golang で依存関係管理ツール「dep」を使って... github.com

「goa」を使おうとしたらハマりました。 github.com

ハマったこと

まず、dep を初期化します。

$ dep init

すると、「Gopkg.toml」ファイルができます。中身は以下のような感じ。

# Gopkg.toml example
#
# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
# for detailed Gopkg.toml documentation.
#
# required = ["github.com/user/thing/cmd/thing"]
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
#
# [[constraint]]
#   name = "github.com/user/project"
#   version = "1.0.0"
#
# [[constraint]]
#   name = "github.com/user/project2"
#   branch = "dev"
#   source = "github.com/myfork/project2"
#
# [[override]]
#   name = "github.com/x/y"
#   version = "2.4.0"
#
# [prune]
#   non-go = false
#   go-tests = true
#   unused-packages = true


[prune]
  go-tests = true
  unused-packages = true

次に、こちら の「Vendoring」に記載されている通り、Gopkg.toml に追記します。

# Gopkg.toml example
#
# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
# for detailed Gopkg.toml documentation.
#
required = ["goa.design/goa/codegen/generator"]
...

そして、$dep ensure! ...すると、「vendor/goa.design/goa」の下に「cmd/goa」が落ちてきません。
これでは $ go build できないではありませんか。

解決法

Gopkg.tomlunused-packages = trueコメントアウトします。# unused-packages = true こんな感じです。
これで $dep ensure すると「cmd/goa」が落ちてくるようになります。

しかし「unused-packages」is 何?
こちらに記載があります。翻訳すると

パッケージインポートグラフに表示されていないディレクトリのファイルを整理する必要があることを示します。

とのことでした。よくわかりませんが...「cmd/goa」は整理されて落ちてこないということなのか...?