File Coverage

Makefile.PL
Criterion Covered Total %
statement 7 72 9.7
branch 0 48 0.0
condition 0 12 0.0
subroutine 3 8 37.5
pod n/a
total 10 140 7.1


line stmt bran cond sub pod time code
1             # -*- mode: perl; c-basic-offset: 4; indent-tabs-mode: nil; -*-
2              
3 1     1   350 use strict;
  1         2  
  1         28  
4 1     1   651 use ExtUtils::MakeMaker qw(WriteMakefile);
  1         93404  
  1         1126  
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::EventEmitter';
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.020', # I use function signatures
44              
45             'LICENSE'=> 'perl',
46              
47             PL_FILES => {},
48             BUILD_REQUIRES => {
49             'ExtUtils::MakeMaker' => 0,
50             },
51              
52             PREREQ_PM => {
53             #'Filter::signatures' => '0.09',
54             'Moo' => 2, # for some hashes-as-objects
55             'Try::Tiny' => 0,
56             'Carp' => 0,
57             'Scalar::Util' => 0,
58             },
59             TEST_REQUIRES => {
60             'Test::More' => 0,
61             },
62              
63             dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
64             clean => { FILES => "$distbase-*" },
65              
66             test => { TESTS => join( ' ', @tests ) },
67             );
68              
69             # This is so that we can do
70             # require 'Makefile.PL'
71             # and then call get_module_info
72              
73 1     1   10 sub get_module_info { %module }
74              
75             if( ! caller ) {
76             # I should maybe use something like Shipwright...
77             regen_README($main_file);
78             regen_EXAMPLES() if -d 'examples';
79             WriteMakefile1(get_module_info);
80             };
81              
82             1;
83              
84             sub WriteMakefile1 { #Written by Alexandr Ciornii, version 0.21. Added by eumm-upgrade.
85 0     0     my %params=@_;
86 0           my $eumm_version=$ExtUtils::MakeMaker::VERSION;
87 0           $eumm_version=eval $eumm_version;
88 0 0         die "EXTRA_META is deprecated" if exists $params{EXTRA_META};
89 0 0         die "License not specified" if not exists $params{LICENSE};
90 0 0 0       if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) {
91             #EUMM 6.5502 has problems with BUILD_REQUIRES
92 0 0         $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{BUILD_REQUIRES}} };
  0            
  0            
93 0           delete $params{BUILD_REQUIRES};
94             }
95 0 0 0       if ($params{TEST_REQUIRES} and $eumm_version < 6.64) {
96 0 0         $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{TEST_REQUIRES}} };
  0            
  0            
97 0           delete $params{TEST_REQUIRES};
98             }
99 0 0         delete $params{CONFIGURE_REQUIRES} if $eumm_version < 6.52;
100 0 0         delete $params{MIN_PERL_VERSION} if $eumm_version < 6.48;
101 0 0         delete $params{META_MERGE} if $eumm_version < 6.46;
102 0 0         delete $params{META_ADD} if $eumm_version < 6.46;
103 0 0         delete $params{LICENSE} if $eumm_version < 6.31;
104 0 0         delete $params{AUTHOR} if $] < 5.005;
105 0 0         delete $params{ABSTRACT_FROM} if $] < 5.005;
106 0 0         delete $params{BINARY_LOCATION} if $] < 5.005;
107              
108 0           WriteMakefile(%params);
109             }
110              
111             sub regen_README {
112             # README is the short version that just tells people what this is
113             # and how to install it
114 0     0     eval {
115             # Get description
116 0           my $readme = join "\n",
117             pod_section($_[0], 'NAME', 'no heading' ),
118             pod_section($_[0], 'DESCRIPTION' ),
119             <
120              
121             INSTALLATION
122              
123             This is a Perl module distribution. It should be installed with whichever
124             tool you use to manage your installation of Perl, e.g. any of
125              
126             cpanm .
127             cpan .
128             cpanp -i .
129              
130             Consult https://www.cpan.org/modules/INSTALL.html for further instruction.
131             Should you wish to install this module manually, the procedure is
132              
133             perl Makefile.PL
134             make
135             make test
136             make install
137              
138             INSTALL
139             pod_section($_[0], 'REPOSITORY'),
140             pod_section($_[0], 'SUPPORT'),
141             pod_section($_[0], 'TALKS'),
142             pod_section($_[0], 'KNOWN ISSUES'),
143             pod_section($_[0], 'BUG TRACKER'),
144             pod_section($_[0], 'CONTRIBUTING'),
145             pod_section($_[0], 'SEE ALSO'),
146             pod_section($_[0], 'AUTHOR'),
147             pod_section($_[0], 'LICENSE' ),
148             pod_section($_[0], 'COPYRIGHT' ),
149             ;
150 0           update_file( 'README', $readme );
151             };
152             # README.mkdn is the documentation that will be shown as the main
153             # page of the repository on Github. Hence we recreate the POD here
154             # as Markdown
155 0           eval {
156 0           require Pod::Markdown;
157              
158 0           my $parser = Pod::Markdown->new();
159              
160             # Read POD from Module.pm and write to README
161 0           $parser->parse_from_file($_[0]);
162 0           my $readme_mkdn = <as_markdown;
163              
164             [![Windows](https://github.com/Corion/$distbase/workflows/windows/badge.svg)](https://github.com/Corion/$distbase/actions?query=workflow%3Awindows)
165             [![MacOS](https://github.com/Corion/$distbase/workflows/macos/badge.svg)](https://github.com/Corion/$distbase/actions?query=workflow%3Amacos)
166             [![Linux](https://github.com/Corion/$distbase/workflows/linux/badge.svg)](https://github.com/Corion/$distbase/actions?query=workflow%3Alinux)
167              
168             STATUS
169 0           update_file( 'README.mkdn', $readme_mkdn );
170             };
171             }
172              
173             sub pod_section {
174 0     0     my( $filename, $section, $remove_heading ) = @_;
175 0 0         open my $fh, '<', $filename
176             or die "Couldn't read '$filename': $!";
177              
178             my @section =
179 0           grep { /^=head1\s+$section/.../^=/ } <$fh>;
  0            
180              
181             # Trim the section
182 0 0         if( @section ) {
183 0 0         pop @section if $section[-1] =~ /^=/;
184 0 0         shift @section if $remove_heading;
185              
186             pop @section
187 0   0       while @section and $section[-1] =~ /^\s*$/;
188             shift @section
189 0   0       while @section and $section[0] =~ /^\s*$/;
190             };
191              
192 0           @section = map { $_ =~ s!^=\w+\s+!!; $_ } @section;
  0            
  0            
193 0           return join "", @section;
194             }
195              
196             sub regen_EXAMPLES {
197 0     0     my $perl = $^X;
198 0 0         if ($perl =~/\s/) {
199 0           $perl = qq{"$perl"};
200             };
201 0           (my $example_file = $main_file) =~ s!\.pm$!/Examples.pm!;
202 0           my $examples = `$perl -w examples/gen_examples_pod.pl`;
203 0 0         if ($examples) {
204 0           warn "(Re)Creating $example_file\n";
205 0           $examples =~ s/\r\n/\n/g;
206 0           update_file( $example_file, $examples );
207             };
208             };
209              
210             sub update_file {
211 0     0     my( $filename, $new_content ) = @_;
212 0           my $content;
213 0 0         if( -f $filename ) {
214 0 0         open my $fh, '<:raw:encoding(UTF-8)', $filename
215             or die "Couldn't read '$filename': $!";
216 0           local $/;
217 0           $content = <$fh>;
218             };
219              
220 0 0         if( $content ne $new_content ) {
221 0 0         if( open my $fh, '>:raw:encoding(UTF-8)', $filename ) {
222 0           print $fh $new_content;
223             } else {
224 0           warn "Couldn't (re)write '$filename': $!";
225             };
226             };
227             }