今まではglideを使ってたのですが、公式ご謹製ということでdepをこれから使っていこうかなと思いまして、一旦Issueを覗いてみました。
その中でも気になったIssueはこちら。
「dep init
して生成されたmanifest.jsonが空だよ」ってIssueなんですが、pksunkaraさんが「僕のリポジトリでdep init
試してみたけど空だったよ」とコメントを寄せていたのでやってみました。
そのリポジトリはこれ↓
で、試してみたんですが確かにmanifest.jsonが空・・・
何でだろうとちょっとdepの中身追っかけてみました。
まずはdep init
を実行するとinit.go
のfunc Run
が動きます。
func Run
の中でmanifest.jsonに書き込む文字列を用意している部分が以下です。
for pr, v := range pd.ondisk { // That we have to chop off these path prefixes is a symptom of // a problem in gps itself pkgs := make([]string, 0, len(pd.dependencies[pr])) prslash := string(pr) + "/" for _, pkg := range pd.dependencies[pr] { if pkg == string(pr) { pkgs = append(pkgs, ".") } else { pkgs = append(pkgs, strings.TrimPrefix(pkg, prslash)) } } l.P = append(l.P, gps.NewLockedProject( gps.ProjectIdentifier{ProjectRoot: pr}, v, pkgs), ) }
pd.ondisk
は$GOPATH/src
に存在しているパッケージの一覧なのですが、このpd.ondisk
が空になっているがためにmanifest.jsonが空になっていました。
つまり、プログラム上で使っているパッケージが$GOPATH/src
に無いと、manifest.jsonは空になるということです。
ふぅむ・・・ここまで調べて「んじゃmanifest.jsonって一体何なんだろうか」って疑問が浮かびました。
ちょっとこの辺りはまた後日調べてみようと思います🙇