Dist::Maker覚書
h2xsからModule::Starter、Module::Setupといろいろなディストリ生成ツールを使ってきましたが、ここ半年ほどはDist::Makerという自作ツールを使っています。特にCPANにリリースするつもりはなかったのですが、Dist::Makerが良い。で紹介してもらったのでちょっと手を加えてリリース準備中です*1。
基本的な使い方は上記エントリにあるので以下は捕捉です。
サブコマンド
新しいディストリはinitで作ります。最近はinitのあとで自動的に`perl Makefile.PL && make manifest`
をしてくれるようになりました。この挙動は`dim config template.dist_init 0`
で抑制できます。
また、newで新しいファイルを作ることができます。これは、作成しようとしているファイルの名前に近いものを基本テンプレートから探し出して使うというものになっています。設置場所も以下のようにある程度推測してくれます。
Dist-Maker$ dim new Foo.pm >> Command::new: running with Foo.pm Default in Dist-Maker >> Command::new: create lib/Dist/Maker/Foo.pm from lib/Dist/Maker.pm >> Command::new: finished. Dist-Maker$ dim new 002_foo.t >> Command::new: running with 002_foo.t Default in Dist-Maker >> Command::new: create t/002_foo.t from t/001_basic.t >> Command::new: finished.
metaサブコマンドはちょっと特殊で、dimに何もサブコマンドが渡されないときはmetaに制御が渡ります。
$ dim --version # dim meta --versioとして処理される
テンプレート
Text::Xslateのテンプレートカスケーディングで実装されてます。テンプレートカスケーディングって雛形作成にぴったりなんじゃ?と思ったのがそもそものきっかけなので。
ファイルに分割せずにすべてを一つのテンプレートで表現しているため、テンプレートは若干書きにくいかもしれません。しかしその分、ファイル名が自由に設定できるようになっています。
*1:現在は開発版としてリリース済み。なおテンプレートはutf8をデフォルトにしました。