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