diff options
| author | Franck Cuny <franckcuny@gmail.com> | 2016-08-04 11:12:37 -0700 |
|---|---|---|
| committer | Franck Cuny <franckcuny@gmail.com> | 2016-08-04 11:12:37 -0700 |
| commit | 2d2a43f200b88627253f2906fbae87cef7c1e8ce (patch) | |
| tree | c65377350d12bd1e62e0bdd58458c1044541c27b /posts/2009-05-22-modules-i-like---module-setup.org | |
| parent | Use Bullet list for the index. (diff) | |
| download | lumberjaph-2d2a43f200b88627253f2906fbae87cef7c1e8ce.tar.gz | |
Mass convert all posts from markdown to org.
Diffstat (limited to 'posts/2009-05-22-modules-i-like---module-setup.org')
| -rw-r--r-- | posts/2009-05-22-modules-i-like---module-setup.org | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/posts/2009-05-22-modules-i-like---module-setup.org b/posts/2009-05-22-modules-i-like---module-setup.org new file mode 100644 index 0000000..2bbca9f --- /dev/null +++ b/posts/2009-05-22-modules-i-like---module-setup.org @@ -0,0 +1,83 @@ +[[http://search.cpan.org/perldoc?Module::Setup][Module::Setup]] by +[[http://blog.yappo.jp/][Yappo]] is a really nice module. I don't like +[[http://search.cpan.org/perldoc?Module::Starter][Module::Starter]], +it's not easy to create template to make it do what you need. With +Module::Setup you can create flavors for any type of modules you want. +Most of the modules I create for work use Moose, and I like to use +Test::Class too. I've created a Moose flavor for creating this kind of +modules. + +*** Creating a Moose flavor for Module::Setup + +First, you tell it to init a new flavor: + +#+BEGIN_EXAMPLE + module-setup --init moose +#+END_EXAMPLE + +Module::Setup ask what is your favorite SCM. For me, it's git. It will +create files in /$HOME/.module-setup/flavors/moose//. + +Start by editing +*$HOME/.module-setup/flavors/moose/template/lib/\_\_\_\_var-module\_path-var\_\_\_\_.pm* +to make it look like this + +#+BEGIN_SRC perl + - use strict; + - use warnings; + + use Moose; +#+END_SRC + +Add *requires 'Moose'* in *Makefile.PL*. Create a +**t/tests/Test/\_\_\_\_var-module\_path-var\_\_\_\_.pm** file with the +following content: + +#+BEGIN_SRC perl + package Test :: [%module %]; + + use strict; + use warnings; + use base 'Test::Class'; + use Test::Exception; + use Test::More; + + sub class {'[% module %]'} + + sub startup : Tests(startup => 1) { + my $test = shift; + use_ok $test->class, "use ok"; + } + + sub shutdown : Tests(shutdown) { + my $test = shift; + } + + sub constructor : Tests(1) { + my $test = shift; + can_ok $test->class, 'new'; + } + + 1; +#+END_SRC + +You will have a Test::Class test ready with basic tests already +implemented. + +If you want to share this template at $work, easy: + +#+BEGIN_EXAMPLE + module-setup --pack DevMoose moose > DevMoose.pm +#+END_EXAMPLE + +You just have to send DevMoose.pm to who need it, and he will be able to +import it with + +#+BEGIN_EXAMPLE + module-setup --init --flavor-class=+DevMoose moose +#+END_EXAMPLE + +Now you can create a new module + +#+BEGIN_EXAMPLE + module-setup MY::AWESOME::MODULE moose +#+END_EXAMPLE |
