今まではglideを使ってたのですが、公式ご謹製ということでdepをこれから使っていこうかなと思いまして、一旦Issueを覗いてみました。
その中でも気になったIssueはこちら。
github.com
「dep init
して生成されたmanifest.jsonが空だよ」ってIssueなんですが、pksunkaraさんが「僕のリポジトリでdep init
試してみたけど空だったよ」とコメントを寄せていたのでやってみました。
そのリポジトリはこれ↓
github.com
で、試してみたんですが確かに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って一体何なんだろうか」って疑問が浮かびました。
ちょっとこの辺りはまた後日調べてみようと思います🙇