@Konboi memo

主に技術に関してつらつらと。

Dist::Makerを使ってひな形を作ってみる。

はじめに

ってことなので 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 でしてする

さいごに

  • moe project の記事が分かりやすいらしいが今はみれない ><
  • 久しぶりにちゃんとしたブログ書いた気がする。

参考URL

gfx/Dist-Maker

shibayu36/p5-Dist-Maker-FromProject

y-uuki/Dist-Maker-Template

業務終了後、git logとDist::Makerでさっさと帰る話

初めてのPerl 第6版

初めてのPerl 第6版