goでそのパッケージが利用しているパッケージを調べるコマンドを作った(pkg-tree)

github.com

元々の発端はdepがTOMLの読み込みに使っているパッケージが何か調べるのが面倒だったため。

install

$ go get -v github.com/podhmo/pkg-tree

使いかた。デフォルトでは標準ライブラリも全部出てしまうので邪魔だったら --ignore-std-pkg などのオプションをつける。

$ pkg-tree --ignore-std-pkg github.com/golang/dep
github.com/golang/dep #=0
  github.com/golang/dep/vendor/github.com/pkg/errors #=14
  github.com/golang/dep/internal/fs #=28
    github.com/golang/dep/vendor/github.com/pkg/errors #=14
  github.com/golang/dep/gps #=30
    github.com/golang/dep/vendor/github.com/boltdb/bolt #=32
    github.com/golang/dep/vendor/github.com/sdboyer/constext #=37
    github.com/golang/dep/vendor/golang.org/x/sync/errgroup #=39
      github.com/golang/dep/vendor/golang.org/x/net/context #=40
    github.com/golang/dep/vendor/github.com/pkg/errors #=14
    github.com/golang/dep/internal/fs #=28
    github.com/golang/dep/vendor/github.com/nightlyone/lockfile #=102
    github.com/golang/dep/vendor/github.com/jmank88/nuts #=103
      github.com/golang/dep/vendor/github.com/boltdb/bolt #=32
    github.com/golang/dep/gps/paths #=104
    github.com/golang/dep/gps/internal/pb #=105
      github.com/golang/dep/vendor/github.com/golang/protobuf/proto #=106
    github.com/golang/dep/gps/pkgtree #=110
      github.com/golang/dep/vendor/github.com/pkg/errors #=14
      github.com/golang/dep/vendor/github.com/armon/go-radix #=121
    github.com/golang/dep/vendor/github.com/golang/protobuf/proto #=106
    github.com/golang/dep/vendor/github.com/armon/go-radix #=121
    github.com/golang/dep/vendor/github.com/Masterminds/semver #=122
    github.com/golang/dep/vendor/github.com/Masterminds/vcs #=125
  github.com/golang/dep/gps/paths #=104
  github.com/golang/dep/gps/pkgtree #=110
  github.com/golang/dep/vendor/github.com/pelletier/go-toml #=127

そういえば

depがTOMLの読み込みに使っているパッケージ https://github.com/pelletier/go-toml みたいですね。