CPAN モジュールの依存モジュールをお手軽に表示するスクリプトを書いた
App-pmdeps
https://github.com/moznion/App-pmdeps
モジュールを書いている皆さんはモジュールの依存関係に細心の注意を払っていることと思いますが、
いちいち CPAN の Web ページにアクセスしたり、curl で API を叩いたりするのがだるいですよね!!!
このスクリプトを使えば、以下のように CPAN モジュールの依存モジュールをお手軽に取得・表示が出来ます。
$ pm-deps Test::Most Target: perl-5.016003 Depends on 3 core modules: Module::Build Test::Harness Test::More Depends on 6 non-core modules: Data::Dumper::Names Exception::Class Test::Deep Test::Differences Test::Exception Test::Warnこうすると Test::Most の依存関係を引っ張って来られます。
処理的には metacpan の API を叩いて prereqs を引っ張ってきている感じです。
$ pm-deps Test::Most 0.10 Target: perl-5.016003 Depends on 2 core modules: Test::Harness Test::More Depends on 4 non-core modules: Test::Deep Test::Differences Test::Exception Test::Warnもちろん、モジュールのバージョン指定も出来ます。
モジュール名に続いてバージョンを指定すると、そのバージョンの依存関係を持ってきます。
(バージョンが省略された場合は、最新のバージョンの情報を持ってきます)
$ pm-deps --perl-version 5.008001 Test::Most Target: perl-5.008001 Depends on 2 core modules: Test::Harness Test::More Depends on 7 non-core modules: Data::Dumper::Names Exception::Class Module::Build Test::Deep Test::Differences Test::Exception Test::Warn`--perl-version` を使うと、対象とする Perl のバージョンを指定することも出来ます。
このオプションを省略した場合は現在使っている Perl のバージョンを利用します。
(コアモジュールと非コアモジュールの内容が変化したのがお分かり頂けるでしょうか)
$ pm-deps --local /path/to/App-pmdeps Target: perl-5.016003 Depends on 6 core modules: CPAN::Meta CPAN::Meta::Prereqs Getopt::Long Module::Build Module::CoreList Term::ANSIColor Test::More Depends on 9 non-core modules: Capture::Tiny Furl JSON Test::CPAN::Meta Test::MinimumVersion Test::MockObject::Extends Test::Perl::Critic Test::Pod Test::Spellunker`--local` オプションでファイルパスを指定すると、ローカルに存在するモジュールの依存関係を引っ張って来れます。
内部的には META.json か MYMETA.json を読んで依存関係を抜き出しています (META.json と MYMETA.json の両方が存在する場合は META.json が優先されます)。
なんか再発明チックですね!!!!!!
ただ、なんか探してもなさそうな感じだったので書きました。アレだったらshipit したい気持ちがあります。