File Coverage

lib/Egg/Helper/Build/Module.pm
Criterion Covered Total %
statement 9 40 22.5
branch 0 8 0.0
condition 0 14 0.0
subroutine 3 9 33.3
pod 3 3 100.0
total 15 74 20.2


line stmt bran cond sub pod time code
1             package Egg::Helper::Build::Module;
2             #
3             # Masatoshi Mizuno E<lt>lusheE<64>cpan.orgE<gt>
4             #
5             # $Id: Module.pm 337 2008-05-14 12:30:09Z lushe $
6             #
7 1     1   369 use strict;
  1         1  
  1         27  
8 1     1   5 use warnings;
  1         2  
  1         25  
9 1     1   4 use Carp qw/ croak /;
  1         2  
  1         571  
10              
11             our $VERSION= '3.02';
12              
13             sub build_script {
14 0     0 1   require Egg::Helper::Util::Base;
15 0           print STDOUT <<SCRIPT;
16 0           #!@{[ Egg::Helper::Util::Base->helper_perl_path ]}
17             use Egg::Helper;
18             Egg::Helper->run('Build::Module');
19             SCRIPT
20             }
21             sub helper_mod_name_split {
22 0     0 1   my $self= shift;
23 0   0       my $mod_name= shift || croak 'I want module name.';
24 0           my @parts;
25 0           for (split /(?:\:+|\-)/, $mod_name) {
26 0           $_= ucfirst $_;
27 0 0         /^[A-Z][A-Za-z0-9_]+$/ || return (undef);
28 0           push @parts, $_;
29             }
30 0           \@parts;
31             }
32             sub helper_mod_template {
33 0     0 1   my $self = shift;
34 0           [ $self->helper_yaml_load(join '', <DATA>) ];
35             }
36             sub _start_helper {
37 0     0     my($self)= @_;
38 0           my $c= $self->config;
39 0   0       my $mod_name= shift(@ARGV)
40             || return $self->_helper_help('I want module name.');
41 0   0       my $parts= $self->helper_mod_name_split($mod_name)
42             || return $self->_helper_help('Bad format of plugin name.');
43 0           my $o= $self->_helper_get_options;
44 0   0       my $version= $self->helper_valid_version_number($o->{version}) || return 0;
45 0   0       my $param = $self->helper_prepare_param({
46             output_path => ($o->{output} || $self->helper_current_dir),
47             module_version => $version,
48             module_generator => __PACKAGE__,
49             created => __PACKAGE__. " v$VERSION",
50             });
51 0           $self->helper_prepare_param_module($param, $parts);
52 0 0         -e $param->{target_path} and
53             return $self->_helper_help("$param->{target_path} A already exists.");
54 0           $param->{module_output_filepath}=
55             "$param->{lib_dir}/$param->{module_filepath}";
56 0 0         $self->helper_generate_files(
57             param => $param,
58             chdir => [$param->{target_path}, 1],
59             create_files => $self->helper_mod_template,
60             makemaker_ok => ($o->{unmake} ? 0: 1),
61             errors => { rmdir=> [$param->{target_path}] },
62             complete_msg => "\nModule generate is completed.\n\n"
63             . "output path : $param->{target_path}\n"
64             );
65 0           $self;
66             }
67             sub _helper_get_options {
68 0     0     shift->next::method(' v-version= m-unmake ');
69             }
70             sub _helper_help {
71 0     0     my $self = shift;
72 0   0       my $msg = shift || "";
73 0 0         $msg= "ERROR: ${msg}\n\n" if $msg;
74 0           print <<END_HELP;
75             ${msg}% egg_module_builder.pl [MODULE_NAME] [-o OUTPUT_PATH] [-v VERSION]
76              
77             END_HELP
78 0           0;
79             }
80              
81             1;
82              
83             =head1 NAME
84              
85             Egg::Helper::Build::Module - The module file complete set is generated.
86              
87             =head1 SYNOPSIS
88              
89             % perl -MEgg::Helper::Build::Module \
90             -e 'Egg::Helper::Build::Module->build_script' \
91             > /path/to/egg_module_builder.pl
92              
93             % perl egg_module_builder.pl MyModule
94              
95             =head1 DESCRIPTION
96              
97             It is a helper who generates the module file complete set.
98              
99             This helper generates the file complete set that L<ExtUtils::MakeMaker> outputs.
100              
101             The thing that starts specifying the mode of the helper script can be done,
102             and the thing that generates a special script from 'build_script' method and
103             uses it can be done.
104              
105             The file complete set is generated when starting specifying the module name made
106             for the generated script.
107              
108             % perl egg_module_builder.pl [MODULE_NAME]
109              
110             The file that this module outputs is as follows.
111              
112             Build.PL
113             Changes
114             Makefile.PL
115             MANIFEST
116             README
117             t/00_use.t
118             t/89_pod.t
119             t/98_perlcritic.t
120             t/99_pod_coverage.t~
121              
122             =head1 METHODS
123              
124             =head2 build_script
125              
126             The start script only for this helper is returned and the code is returned.
127              
128             % perl -MEgg::Helper::Build::Module -e 'Egg::Helper::Build::Module->build_script'
129              
130             =head2 helper_mod_name_split ([MODULE_NAME])
131              
132             The ARRAY reference into which MODULE_NAME is divided by ':' and '-' is returned.
133              
134             Undefined is returned if there is suitably no divided each value as a module name
135             of Perl.
136              
137             my $parts= $self->helper_mod_name_split($module_name) || return 0;
138              
139             =head2 helper_mod_template
140              
141             Each template of the output file is settled by the ARRAY reference and it
142             returns it.
143              
144             Each value of ARRAY is HASH form to pass it to 'helper_create_files' method.
145              
146             my $files= $self->helper_mod_template;
147              
148             =head1 SEE ALSO
149              
150             L<Egg::Release>,
151             L<Egg::Helper>,
152              
153             =head1 AUTHOR
154              
155             Masatoshi Mizuno E<lt>lusheE<64>cpan.orgE<gt>
156              
157             =head1 COPYRIGHT AND LICENSE
158              
159             Copyright (C) 2008 Bee Flag, Corp. E<lt>L<http://egg.bomcity.com/>E<gt>.
160              
161             This library is free software; you can redistribute it and/or modify
162             it under the same terms as Perl itself, either Perl version 5.8.6 or,
163             at your option, any later version of Perl 5 you may have available.
164              
165             =cut
166              
167              
168              
169             __DATA__
170             ---
171             filename: <e.module_output_filepath>
172             filetype: module
173             value: |
174             package <e.module_distname>;
175             #
176             # Copyright (C) <e.year> <e.headcopy>.
177             # <e.author>
178             #
179             # <e.revision>
180             #
181             use strict;
182             use warnings;
183            
184             our $VERSION = '<e.module_version>';
185            
186             # ... Let's write the perl code here.
187            
188             # Please refer to L<<e.module_generator>> for hook of Egg.
189            
190             1;
191            
192             __END__
193             <e.document>
194            
195             ---
196             filename: Makefile.PL
197             value: |
198             use inc::Module::Install;
199            
200             name '<e.module_name>';
201             all_from 'lib/<e.module_filepath>';
202             version_from 'lib/<e.module_filepath>';
203             abstract_from 'lib/<e.module_filepath>';
204             author '<e.author>';
205             license '<e.license>';
206            
207             requires 'Egg::Release' => <e.egg_release_version>;
208            
209             build_requires 'Test::More';
210             build_requires 'Test::Pod';
211             # build_requires 'Test::Perl::Critic';
212             # build_requires 'Test::Pod::Coverage';
213            
214             use_test_base;
215             auto_include;
216             WriteAll;
217            
218             ---
219             filename: t/00_use.t
220             value: |
221             # Before `make install' is performed this script should be runnable with
222             # `make test'. After `make install' it should work as `perl test.t'
223            
224             #########################
225            
226             # change 'tests => 1' to 'tests => last_test_to_print';
227            
228             use Test::More tests => 1;
229             BEGIN { use_ok('<e.module_distname>') };
230            
231             #########################
232            
233             # Insert your test code below, the Test::More module is use()ed here so read
234             # its man page ( perldoc Test::More ) for help writing this test script.
235            
236             ---
237             filename: t/89_pod.t
238             value: |
239             use Test::More;
240             eval "use Test::Pod 1.00";
241             plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;
242             all_pod_files_ok();
243            
244             ---
245             filename: t/98_perlcritic.t
246             value: |
247             use strict;
248             use Test::More;
249             eval q{ use Test::Perl::Critic };
250             plan skip_all => "Test::Perl::Critic is not installed." if $@;
251             all_critic_ok("lib");
252            
253             ---
254             filename: t/99_pod_coverage.t~
255             value: |
256             use Test::More;
257             eval "use Test::Pod::Coverage 1.00";
258             plan skip_all => "Test::Pod::Coverage 1.00 required for testing POD coverage" if $@;
259             all_pod_coverage_ok();
260            
261             ---
262             filename: Changes
263             value: |
264             Revision history for Perl extension <$e.distname>.
265            
266             <e.module_version> <e.gmtime_string>
267             - original version; created by <e.created>
268             with module name <e.module_distname>
269            
270             ---
271             filename: README
272             value: |
273             <e.module_distname>.
274             =================================================
275            
276             The README is used to introduce the module and provide instructions on
277             how to install the module, any machine dependencies it may have (for
278             example C compilers and installed libraries) and any other information
279             that should be provided before the module is installed.
280            
281             A README file is required for CPAN modules since CPAN extracts the
282             README file from a module distribution so that people browsing the
283             archive can use it get an idea of the modules uses. It is usually a
284             good idea to provide version information here so that people can
285             decide whether fixes for the module are worth downloading.
286            
287             INSTALLATION
288            
289             To install this module type the following:
290            
291             perl Makefile.PL
292             make
293             make test
294             make install
295            
296             AUTHOR
297            
298             <e.author>
299            
300             COPYRIGHT AND LICENCE
301            
302             Put the correct copyright and licence information here.
303            
304             Copyright (C) <e.year> by <e.copyright>.
305            
306             This library is free software; you can redistribute it and/or modify
307             it under the same terms as Perl itself, either Perl version 5.8.6 or,
308             at your option, any later version of Perl 5 you may have available.
309            
310             ---
311             filename: MANIFEST.SKIP
312             value: |
313             \bRCS\b
314             \bCVS\b
315             ^blib/
316             ^_build/
317             ^MANIFEST\.
318             ^Makefile$
319             ^pm_to_blib
320             ^MakeMaker-\d
321             ^t/9\d+_.*\.t
322             Build$
323             \.cvsignore
324             \.?svn*
325             ^\%
326             (~|\-|\.(old|save|back|gz))$