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