2006年10月30日月曜日

[Perl] モジュールの自動作成

CPAN の Module::Starter を使用すると簡単にモジュールの基本ファイルを生成してくれます。
新たにモジュール作るときには非常に便利です。

Module::Starter インストール後、設定ファイルを用意
$ vi ~/.module-starter/config
author: isoya9
email: isoya@cpan.org

モジュール一式生成
$ module-starter --module=New::Module::Name

以下の基本ファイルができている
$ ls -lR New-Module-Name/
New-Module-Name/:
-rw-r--r-- 1 root root 102 10月 29 03:22 .cvsignore
-rw-r--r-- 1 root root 115 10月 29 03:22 Changes
-rw-r--r-- 1 root root 154 10月 29 03:22 MANIFEST
-rw-r--r-- 1 root root 501 10月 29 03:22 Makefile.PL
-rw-r--r-- 1 root root 1420 10月 29 03:22 README
drwxr-xr-x 3 root root 4096 10月 29 03:22 lib/
drwxr-xr-x 2 root root 4096 10月 29 03:22 t/

New-Module-Name/lib:
drwxr-xr-x 3 root root 4096 10月 29 03:22 New/

New-Module-Name/lib/New:
drwxr-xr-x 2 root root 4096 10月 29 03:22 Module/

New-Module-Name/lib/New/Module:
-rw-r--r-- 1 root root 1727 10月 29 03:22 Name.pm

New-Module-Name/t:
-rw-r--r-- 1 root root 161 10月 29 03:22 00-load.t
-rw-r--r-- 1 root root 1238 10月 29 03:22 boilerplate.t
-rw-r--r-- 1 root root 172 10月 29 03:22 pod-coverage.t
-rw-r--r-- 1 root root 140 10月 29 03:22 pod.t

.t/ には、Test::More の雛形を用意してくれる。例えばこんな感じ
$ cat New-Module-Name/t/00-load.t
#!perl -T

use Test::More tests => 1;

BEGIN {
use_ok( 'New::Module::Name' );
}

diag( "Testing New::Module::Name $New::Module::Name::VERSION, Perl $], $^X" );

Test::More については、また後ほど。

で、モジュール一式を生成してくれますが、指定したテンプレートを元に生成してほしい場合。。。
そういう時は、Module::Starter::PBP を使用すれば実現できます。

Module::Starter::PBP インストール後、基本テンプレートを生成
$ perl -MModule::Starter::PBP=setup

すると、以下の基本テンプレートファイルを出力。
$ ls -lR ~/.module-starter/PBP/
/root/.module-starter/PBP/:
-rw-r--r-- 1 root root 419 10月 29 03:31 Build.PL
-rw-r--r-- 1 root root 70 10月 29 03:31 Changes
-rw-r--r-- 1 root root 490 10月 29 03:31 Makefile.PL
-rw-r--r-- 1 root root 4986 10月 29 03:31 Module.pm
-rw-r--r-- 1 root root 884 10月 29 03:31 README
drwxr-xr-x 2 root root 4096 10月 29 03:31 t/

/root/.module-starter/PBP/t:
-rw-r--r-- 1 root root 189 10月 29 03:31 perlcritic.t
-rw-r--r-- 1 root root 172 10月 29 03:31 pod-coverage.t
-rw-r--r-- 1 root root 140 10月 29 03:31 pod.t

テンプレートの指定は config でできます。
$ vi ~/.module-starter/config
author: isoya9
email: isoya@cpan.org
plugins: Module::Starter::PBP
template_dir: /root/.module-starter/PBP


あとは /root/.module-starter/PBP/ 配下のファイルを好きなディレクトリにコピーし
自由にカスタマイズして
$ module-starter --module=New::Module::Name

これで、テンプレートを元にしたモジュール一式が生成されます。

このネタは Perlベストプラクティス に掲載されてます。
Perl な人には一読を。

0 件のコメント: