#!/usr/bin/perl
my
(
$template
,
$target
) =
@ARGV
;
$target
||=
$template
;
if
(-e
"pkg/$template"
) {
my
$text
= io->file(
"pkg/$template"
)->all;
io->file(
$target
)->
print
(
$text
);
}
else
{
my
$meta
= Zilla::Dist->get_meta;
my
$data
= merge((
delete
(
$meta
->{
'=zild'
}) || {}),
$meta
);
$data
->{zilla_dist}{version} =
$Zilla::Dist::VERSION
;
$data
->{layout} = +{
map
{
my
$name
=
$_
->name;
$name
=~ s!./!!;
$name
=~ s![^\w]!_!g;
$name
=~ s!^_+!!;
(
$name
, 1);
} io(
'.'
)->all
};
if
(
$template
ne
'dist.ini'
) {
my
$travis
=
delete
(
$meta
->{
'=travis'
}) || {};
$travis
->{type} ||=
$data
->{language};
exit
unless
$travis
->{type} eq
'perl'
;
$data
= merge(
$travis
,
$data
);
}
$data
->{RequiredModules} = [];
if
(
my
$r
=
$data
->{requires}) {
push
@{
$data
->{RequiredModules}},
keys
%$r
;
}
if
(
my
$r
=
$data
->{test}{requires}) {
push
@{
$data
->{RequiredModules}},
keys
%$r
;
}
if
(
my
$r
=
$data
->{recommends}) {
push
@{
$data
->{RequiredModules}},
keys
%$r
;
}
(
$data
->{namepath} =
$data
->{libname} ||
$data
->{name})
=~ s/(?:-|::)/\//g;
$data
->{sharedir} = 1
if
-d
'share'
;
$data
->{author} = [
$data
->{author} ]
unless
ref
(
$data
->{author}) eq
'ARRAY'
;
my
$text
= tt
->path([File::Share::dist_dir(
'Zilla-Dist'
)])
->data(
$data
)
->render(
$template
);
io->file(
$target
)->
print
(
$text
);
}