File Coverage

Makefile.PL
Criterion Covered Total %
statement 7 74 9.4
branch 0 48 0.0
condition 0 12 0.0
subroutine 3 8 37.5
pod n/a
total 10 142 7.0


line stmt bran cond sub pod time code
1             # -*- mode: perl; c-basic-offset: 4; indent-tabs-mode: nil; -*-
2              
3 1     1   378 use strict;
  1         1  
  1         29  
4 1     1   711 use ExtUtils::MakeMaker qw(WriteMakefile);
  1         91699  
  1         1092  
5             # See lib/ExtUtils/MakeMaker.pm for details of how to influence
6             # the contents of the Makefile that is written.
7              
8             # Normalize version strings like 6.30_02 to 6.3002,
9             # so that we can do numerical comparisons on it.
10             my $eumm_version = $ExtUtils::MakeMaker::VERSION;
11             $eumm_version =~ s/_//;
12              
13             my $module = 'MooX::Role::DBIConnection';
14             (my $main_file = "lib/$module.pm" ) =~ s!::!/!g;
15             (my $distbase = $module) =~ s!::!-!g;
16             my $distlink = $distbase;
17              
18             my @tests = map { glob $_ } 't/*.t', 't/*/*.t';
19              
20             my %module = (
21             NAME => $module,
22             AUTHOR => q{Max Maischein },
23             VERSION_FROM => $main_file,
24             ABSTRACT_FROM => $main_file,
25             META_MERGE => {
26             "meta-spec" => { version => 2 },
27             resources => {
28             repository => {
29             web => "https://github.com/Corion/$distlink",
30             url => "git://github.com/Corion/$distlink.git",
31             type => 'git',
32             },
33             bugtracker => {
34             web => "https://github.com/Corion/$distbase/issues",
35             # mailto => 'meta-bugs@example.com',
36             },
37             license => "https://dev.perl.org/licenses/",
38             },
39             dynamic_config => 0, # we promise to keep META.* up-to-date
40             x_static_install => 1, # we are pure Perl and don't do anything fancy
41             },
42              
43             MIN_PERL_VERSION => '5.010', # I use // in some places
44              
45             'LICENSE'=> 'perl',
46              
47             PL_FILES => {},
48             BUILD_REQUIRES => {
49             'ExtUtils::MakeMaker' => 0,
50             },
51              
52             PREREQ_PM => {
53             'Exporter' => 5, # for 'import'
54             'POSIX' => 0, # for 'setsid' on POSIXish systems
55             'File::Spec' => 0,
56              
57             'Filter::signatures' => '0.09',
58             'Carp' => 0,
59             'Moo' => 2, # for some hashes-as-objects
60             'DBI' => 0,
61             },
62             TEST_REQUIRES => {
63             'Test::More' => 0,
64             },
65              
66             dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
67             clean => { FILES => "$distbase-*" },
68              
69             test => { TESTS => join( ' ', @tests ) },
70             );
71              
72             # This is so that we can do
73             # require 'Makefile.PL'
74             # and then call get_module_info
75              
76 1     1   10 sub get_module_info { %module }
77              
78             if( ! caller ) {
79             # I should maybe use something like Shipwright...
80             regen_README($main_file);
81             regen_EXAMPLES() if -d 'examples';
82             WriteMakefile1(get_module_info);
83             };
84              
85             1;
86              
87             sub WriteMakefile1 { #Written by Alexandr Ciornii, version 0.21. Added by eumm-upgrade.
88 0     0     my %params=@_;
89 0           my $eumm_version=$ExtUtils::MakeMaker::VERSION;
90 0           $eumm_version=eval $eumm_version;
91 0 0         die "EXTRA_META is deprecated" if exists $params{EXTRA_META};
92 0 0         die "License not specified" if not exists $params{LICENSE};
93 0 0 0       if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) {
94             #EUMM 6.5502 has problems with BUILD_REQUIRES
95 0 0         $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{BUILD_REQUIRES}} };
  0            
  0            
96 0           delete $params{BUILD_REQUIRES};
97             }
98 0 0 0       if ($params{TEST_REQUIRES} and $eumm_version < 6.64) {
99 0 0         $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{TEST_REQUIRES}} };
  0            
  0            
100 0           delete $params{TEST_REQUIRES};
101             }
102 0 0         delete $params{CONFIGURE_REQUIRES} if $eumm_version < 6.52;
103 0 0         delete $params{MIN_PERL_VERSION} if $eumm_version < 6.48;
104 0 0         delete $params{META_MERGE} if $eumm_version < 6.46;
105 0 0         delete $params{META_ADD} if $eumm_version < 6.46;
106 0 0         delete $params{LICENSE} if $eumm_version < 6.31;
107 0 0         delete $params{AUTHOR} if $] < 5.005;
108 0 0         delete $params{ABSTRACT_FROM} if $] < 5.005;
109 0 0         delete $params{BINARY_LOCATION} if $] < 5.005;
110              
111 0           WriteMakefile(%params);
112             }
113              
114             sub regen_README {
115             # README is the short version that just tells people what this is
116             # and how to install it
117 0     0     eval {
118             # Get description
119 0           my $readme = join "\n",
120             pod_section($_[0], 'NAME', 'no heading' ),
121             pod_section($_[0], 'DESCRIPTION' ),
122             <
123              
124             INSTALLATION
125              
126             This is a Perl module distribution. It should be installed with whichever
127             tool you use to manage your installation of Perl, e.g. any of
128              
129             cpanm .
130             cpan .
131             cpanp -i .
132              
133             Consult https://www.cpan.org/modules/INSTALL.html for further instruction.
134             Should you wish to install this module manually, the procedure is
135              
136             perl Makefile.PL
137             make
138             make test
139             make install
140              
141             INSTALL
142             pod_section($_[0], 'REPOSITORY'),
143             pod_section($_[0], 'SUPPORT'),
144             pod_section($_[0], 'TALKS'),
145             pod_section($_[0], 'KNOWN ISSUES'),
146             pod_section($_[0], 'BUG TRACKER'),
147             pod_section($_[0], 'CONTRIBUTING'),
148             pod_section($_[0], 'SEE ALSO'),
149             pod_section($_[0], 'AUTHOR'),
150             pod_section($_[0], 'LICENSE' ),
151             pod_section($_[0], 'COPYRIGHT' ),
152             ;
153 0           update_file( 'README', $readme );
154             };
155             # README.mkdn is the documentation that will be shown as the main
156             # page of the repository on Github. Hence we recreate the POD here
157             # as Markdown
158 0           eval {
159 0           require Pod::Markdown;
160              
161 0           my $parser = Pod::Markdown->new();
162              
163             # Read POD from Module.pm and write to README
164 0           $parser->parse_from_file($_[0]);
165 0           my $readme_mkdn = <as_markdown;
166              
167             [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/Corion/$distlink?branch=master&svg=true)](https://ci.appveyor.com/project/Corion/$distlink)
168             [![Windows](https://github.com/Corion/$distbase/workflows/windows/badge.svg)](https://github.com/Corion/$distbase/actions?query=workflow%3Awindows)
169             [![MacOS](https://github.com/Corion/$distbase/workflows/macos/badge.svg)](https://github.com/Corion/$distbase/actions?query=workflow%3Amacos)
170             [![Linux](https://github.com/Corion/$distbase/workflows/linux/badge.svg)](https://github.com/Corion/$distbase/actions?query=workflow%3Alinux)
171              
172             STATUS
173 0           update_file( 'README.mkdn', $readme_mkdn );
174             };
175             }
176              
177             sub pod_section {
178 0     0     my( $filename, $section, $remove_heading ) = @_;
179 0 0         open my $fh, '<', $filename
180             or die "Couldn't read '$filename': $!";
181              
182             my @section =
183 0           grep { /^=head1\s+$section/.../^=/ } <$fh>;
  0            
184              
185             # Trim the section
186 0 0         if( @section ) {
187 0 0         pop @section if $section[-1] =~ /^=/;
188 0 0         shift @section if $remove_heading;
189              
190             pop @section
191 0   0       while @section and $section[-1] =~ /^\s*$/;
192             shift @section
193 0   0       while @section and $section[0] =~ /^\s*$/;
194             };
195              
196 0           @section = map { $_ =~ s!^=\w+\s+!!; $_ } @section;
  0            
  0            
197 0           return join "", @section;
198             }
199              
200             sub regen_EXAMPLES {
201 0     0     my $perl = $^X;
202 0 0         if ($perl =~/\s/) {
203 0           $perl = qq{"$perl"};
204             };
205 0           (my $example_file = $main_file) =~ s!\.pm$!/Examples.pm!;
206 0           my $examples = `$perl -w examples/gen_examples_pod.pl`;
207 0 0         if ($examples) {
208 0           warn "(Re)Creating $example_file\n";
209 0           $examples =~ s/\r\n/\n/g;
210 0           update_file( $example_file, $examples );
211             };
212             };
213              
214             sub update_file {
215 0     0     my( $filename, $new_content ) = @_;
216 0           my $content;
217 0 0         if( -f $filename ) {
218 0 0         open my $fh, '<', $filename
219             or die "Couldn't read '$filename': $!";
220 0           binmode $fh;
221 0           local $/;
222 0           $content = <$fh>;
223             };
224              
225 0 0         if( $content ne $new_content ) {
226 0 0         if( open my $fh, '>', $filename ) {
227 0           binmode $fh;
228 0           print $fh $new_content;
229             } else {
230 0           warn "Couldn't (re)write '$filename': $!";
231             };
232             };
233             }