File Coverage

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