Dist::Makerを使ってひな形を作ってみる。
はじめに
rails new みたいなのを perl でやろうとしたら今もModule::Setupで作ったflavorをセットアップしてやるのが一般的なのかな??
— こんぼい。 (@Konboi) 2014, 5月 18
@Konboi Amon2なんかは、独自で雛形作成機構を持ってるけど、自分独自のやつ作りたいんだったらDist::Makerとかが最近は便利かなー
— songmu (@songmu) 2014, 5月 18
@Konboi amon2とかmojoとかnephiaは自前でそのしくみ持ってます。Dist::Makerってのもある
— /dev/null (@mackee_w) 2014, 5月 18
ってことなので Dist::Makerを使ってみた。
インストール
Dist::Makerのインストール
cpanm Dist::Maker
インストールできると dim コマンドが使えるようになる。
(発音が正しいかは分からないが、でぃむって言葉がなにか強力なものを感じる)
ひな形の作成
dim init Dist::Maker::Template::MyApp::Template cd Dist-Maker-Template-MyApp-Template
$ tree
├── Changes
├── MANIFEST
├── MANIFEST.SKIP
├── MANIFEST.SKIP.bak
├── META.yml
├── MYMETA.json
├── MYMETA.yml
├── Makefile
├── Makefile.PL
├── README
├── author
│ └── requires.cpanm
├── blib
│ ├── arch
│ │ └── auto
│ │ └── Dist
│ │ └── Maker
│ │ └── Template
│ │ └── MyApp
│ │ └── Template
│ ├── bin
│ ├── lib
│ │ ├── Dist
│ │ │ └── Maker
│ │ │ └── Template
│ │ │ └── MyApp
│ │ │ └── Template.pm
│ │ └── auto
│ │ └── Dist
│ │ └── Maker
│ │ └── Template
│ │ └── MyApp
│ │ └── Template
│ ├── man1
│ ├── man3
│ │ └── Dist::Maker::Template::MyApp::Template.3
│ └── script
├── inc
│ └── Module
│ ├── Install
│ │ ├── AuthorTests.pm
│ │ ├── Base.pm
│ │ ├── Makefile.pm
│ │ ├── Metadata.pm
│ │ ├── Repository.pm
│ │ └── WriteAll.pm
│ └── Install.pm
├── lib
│ └── Dist
│ └── Maker
│ └── Template
│ └── MyApp
│ └── Template.pm
├── pm_to_blib
├── t
│ ├── 000_load.t
│ └── 001_basic.t
└── xt
├── perlcritic.t
├── pod.t
├── podcoverage.t
├── podspell.t
└── podsynopsis.t
ひな形ができる。
つくってみる
.gitignoreに.swpを追加し、README.mdをつくるサンプルをつくってみる
# lib/Dist/Maker/Template/MyApp/Template.pm package Dist::Maker::Template::MyApp::Template; use 5.008_001; use strict; use warnings; use Mouse; use MouseX::StrictConstructor; extends 'Dist::Maker::Base'; with 'Dist::Maker::Template'; our $VERSION = '0.01'; sub dist_init { } sub distribution { return <<'DIST' @@.gitignore *.swp @@REAME.md # さんぷるーーーーーーー DIST } no Mouse; __PACKAGE__->meta->make_immutable(); 1;
Dist::Templateをインストールする
podのカバレッジが低いぞって怒られますが、テストなので -f オプションをつけてインストールしてしまいます。
ちゃんと作ったらgithubあたりに上げて公開するのがよさそう。
cpanm -f .
$ cpanm -f . --> Working on . Configuring Dist-Maker-Template-MyApp-Template-0.01 ... OK Building and testing Dist-Maker-Template-MyApp-Template-0.01 ... FAIL ! Testing Dist-Maker-Template-MyApp-Template-0.01 failed but installing it anyway. Successfully installed Dist-Maker-Template-MyApp-Template-0.01 1 distribution installed
実際にTemplteを作ってる
適当な場所で
$ dim init MySample MyApp::Template >> Command::init: running with MySample MyApp::Template ... >> Command::init: finished. cd MySample
移動して
$ tree -a . ├── .dimconfig ├── .gitignore └── REAME.md
$ cat .gitignore *.swp
できてる!!!!!!
あとはこれを拡張してけばいい感じのひな形になるはず!
嵌ったこと
- 名前空間は
Dist::Maker::Template::Hoge::Fugaにしないといけない - 使うときは
Hoge::Fugaでしてする
さいごに
Dist::Makerはひさいちのブログの記事が分かりやすく解説してましたね(遠い目
— songmu (@songmu) 2014, 5月 18
- moe project の記事が分かりやすいらしいが今はみれない ><
- 久しぶりにちゃんとしたブログ書いた気がする。
参考URL
shibayu36/p5-Dist-Maker-FromProject
業務終了後、git logとDist::Makerでさっさと帰る話

- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (16件) を見る