my
$eumm_version
=
$ExtUtils::MakeMaker::VERSION
;
$eumm_version
=~ s/_//;
my
$module
=
'Text::HTML::Turndown'
;
(
my
$main_file
=
"lib/$module.pm"
) =~ s!::!/!g;
(
my
$distbase
=
$module
) =~ s!::!-!g;
my
$distlink
=
$distbase
;
my
@tests
=
map
{
glob
$_
}
't/*.t'
,
't/*/*.t'
;
my
%module
= (
NAME
=>
$module
,
AUTHOR
=>
q{Max Maischein <corion@cpan.org>}
,
VERSION_FROM
=>
$main_file
,
ABSTRACT_FROM
=>
$main_file
,
META_MERGE
=> {
"meta-spec"
=> {
version
=> 2 },
resources
=> {
repository
=> {
type
=>
'git'
,
},
bugtracker
=> {
},
},
dynamic_config
=> 0,
x_static_install
=> 1,
},
MIN_PERL_VERSION
=>
'5.020'
,
'LICENSE'
=>
'artistic_2'
,
PL_FILES
=> {},
BUILD_REQUIRES
=> {
'ExtUtils::MakeMaker'
=> 0,
},
PREREQ_PM
=> {
'experimental'
=>
'0.034'
,
'Carp'
=> 0,
'File::Basename'
=> 0,
'Module::Load'
=> 0,
'Moo'
=> 2,
'List::MoreUtils'
=> 0,
'List::Util'
=> 0,
'XML::LibXML'
=> 0,
},
TEST_REQUIRES
=> {
'Test2::V0'
=> 0,
'JSON::Tiny'
=> 0,
},
dist
=> {
COMPRESS
=>
'gzip -9f'
,
SUFFIX
=>
'gz'
, },
clean
=> {
FILES
=>
"$distbase-*"
},
test
=> {
TESTS
=>
join
(
' '
,
@tests
) },
);
sub
get_module_info {
%module
}
if
( !
caller
) {
my
$mm
= WriteMakefile1(get_module_info);
my
$version
=
$mm
->parse_version(
$main_file
);
regen_README(
$main_file
,
$version
);
regen_EXAMPLES()
if
-d
'examples'
;
};
1;
sub
WriteMakefile1 {
my
%params
=
@_
;
my
$eumm_version
=
$ExtUtils::MakeMaker::VERSION
;
$eumm_version
=
eval
$eumm_version
;
die
"EXTRA_META is deprecated"
if
exists
$params
{EXTRA_META};
die
"License not specified"
if
not
exists
$params
{LICENSE};
if
(
$params
{BUILD_REQUIRES} and
$eumm_version
< 6.5503) {
$params
{PREREQ_PM}={ %{
$params
{PREREQ_PM} || {}} , %{
$params
{BUILD_REQUIRES}} };
delete
$params
{BUILD_REQUIRES};
}
if
(
$params
{TEST_REQUIRES} and
$eumm_version
< 6.64) {
$params
{PREREQ_PM}={ %{
$params
{PREREQ_PM} || {}} , %{
$params
{TEST_REQUIRES}} };
delete
$params
{TEST_REQUIRES};
}
delete
$params
{CONFIGURE_REQUIRES}
if
$eumm_version
< 6.52;
delete
$params
{MIN_PERL_VERSION}
if
$eumm_version
< 6.48;
delete
$params
{META_MERGE}
if
$eumm_version
< 6.46;
delete
$params
{META_ADD}
if
$eumm_version
< 6.46;
delete
$params
{LICENSE}
if
$eumm_version
< 6.31;
delete
$params
{AUTHOR}
if
$] < 5.005;
delete
$params
{ABSTRACT_FROM}
if
$] < 5.005;
delete
$params
{BINARY_LOCATION}
if
$] < 5.005;
WriteMakefile(
%params
);
}
sub
regen_README {
my
(
$file
,
$version
) =
@_
;
eval
{
my
$readme
=
join
"\n"
,
pod_section(
$file
,
'NAME'
,
'no heading'
),
pod_section(
$file
,
'DESCRIPTION'
),
<<VERSION,
This document describes version $version.
VERSION
<<INSTALL,
INSTALLATION
This is a Perl module distribution. It should be installed with whichever
tool you use to manage your installation of Perl, e.g. any of
cpanm .
cpan .
cpanp -i .
Should you wish to install this module manually, the procedure is
perl Makefile.PL
make
make test
make install
INSTALL
pod_section(
$file
,
'REPOSITORY'
),
pod_section(
$file
,
'SUPPORT'
),
pod_section(
$file
,
'TALKS'
),
pod_section(
$file
,
'KNOWN ISSUES'
),
pod_section(
$file
,
'BUG TRACKER'
),
pod_section(
$file
,
'CONTRIBUTING'
),
pod_section(
$file
,
'SEE ALSO'
),
pod_section(
$file
,
'AUTHOR'
),
pod_section(
$file
,
'LICENSE'
),
pod_section(
$file
,
'COPYRIGHT'
),
;
update_file(
'README'
,
$readme
);
};
eval
{
my
$parser
= Pod::Markdown->new();
$parser
->parse_from_file(
$_
[0]);
my
$readme_mkdn
=
<<STATUS . $parser->as_markdown;
STATUS
update_file(
'README.mkdn'
,
$readme_mkdn
);
};
}
sub
pod_section {
my
(
$filename
,
$section
,
$remove_heading
) =
@_
;
open
my
$fh
,
'<'
,
$filename
or
die
"Couldn't read '$filename': $!"
;
my
@section
=
grep
{ /^=head1\s+
$section
/.../^=/ } <
$fh
>;
if
(
@section
) {
pop
@section
if
$section
[-1] =~ /^=/;
shift
@section
if
$remove_heading
;
pop
@section
while
@section
and
$section
[-1] =~ /^\s*$/;
shift
@section
while
@section
and
$section
[0] =~ /^\s*$/;
};
@section
=
map
{
$_
=~ s!^=\w+\s+!!;
$_
}
@section
;
return
join
""
,
@section
;
}
sub
regen_EXAMPLES {
my
$perl
= $^X;
if
(
$perl
=~/\s/) {
$perl
=
qq{"$perl"}
;
};
(
my
$example_file
=
$main_file
) =~ s!\.pm$!/Examples.pm!;
my
$examples
= `
$perl
-w examples/gen_examples_pod.pl`;
if
(
$examples
) {
warn
"(Re)Creating $example_file\n"
;
$examples
=~ s/\r\n/\n/g;
update_file(
$example_file
,
$examples
);
};
};
sub
update_file {
my
(
$filename
,
$new_content
) =
@_
;
my
$content
;
if
( -f
$filename
) {
open
my
$fh
,
'<:raw:encoding(UTF-8)'
,
$filename
or
die
"Couldn't read '$filename': $!"
;
local
$/;
$content
= <
$fh
>;
};
if
(
$content
ne
$new_content
) {
if
(
open
my
$fh
,
'>:raw:encoding(UTF-8)'
,
$filename
) {
print
$fh
$new_content
;
}
else
{
warn
"Couldn't (re)write '$filename': $!"
;
};
};
}