Install developper's prerequisites with cpanm
Makefile.PLで開発者用のモジュールを宣言するにはM::I::AuthorRequiresがあるが、これはモジュールがインストールされていなければdieするので、結局は手作業でモジュールをインストールしなければならない。
しかし、今やcpanmがあるので、「モジュールのリスト」さえあればインストールするのは簡単だ。
まず、author/requires.cpanm に以下の用にモジュールをリストする。このリストはcpanmの引数として扱われるので、--verboseなどのcpanmのオプションも書くこともできる。また、コメント(#)も使える。
(この例は Mouse/author/requires.cpanm よりコピペしたもの)
# modules which the authors require: # $ cpanm < author/requires.cpanm # see also App::cpanminus (a.k.a. cpanm) # Module::Install stuff Module::Install Module::Install::AuthorTests Module::Install::XSUtil # Test stuff Test::More Test::Exception Test::LeakTrace Test::Output # required by recipes Regexp::Common Locale::US HTTP::Headers use Params::Coerce URI
あとは、このリストについてドキュメントに書くなり、Makefile.PLに細工をするなりすればよい。
たとえば、Makefile.PLに以下のように記述すると、M::I流のauthor modeのときか、--authorオプションを与えたときにこのモジュールリストをインストールできる*1。
# スクリプトの冒頭 BEGIN{ if(grep{ $_ eq '--author' } @ARGV){ system "$^X -S cpanm < author/requires.cpanm"; }} use Module::Install; ...
単にリストを与える以上のことをしたいときは、App::cpanminus を使ったスクリプトを書いてもいい*2。
#!perl use warnings; use strict; use App::cpanminus::script; my @args = qw( Module::Install Module::Install::XSUtil Test::LeakTrace ); my $app = App::cpanminus::script->new; $app->parse_options(@args); $app->doit; __END__