App-Skeletor
view release on metacpan or search on metacpan
lib/App/Skeletor.pm view on Meta::CPAN
495051525354555657585960616263646566676869707172737475767778sub
run {
my
(
$class
,
@args
) =
@_
;
## Look in homedir and grab any options
if
(-e(
my
$saved_options_path
= path(File::HomeDir->my_home,
'.skeletor.json'
))) {
"Found user options at: $saved_options_path\n"
;
my
$json_opts
= decode_json(
$saved_options_path
->slurp);
@args
= (
@args
,
%$json_opts
);
}
local
@ARGV
=
@args
;
my
(
$desc
,
@spec
) = getopt_spec;
my
(
$opt
,
$usage
) = describe_options(
$desc
,
@spec
, {
getopt_conf
=>[
'pass_through'
]});
my
(
$path_to_share
,
$tmp
) = path_to_share(
$opt
->template);
## Templates can add or override options
if
(
$opt
->template->can(
'extra_getopt_spec'
)) {
my
@new_spec
= (
@spec
,
$opt
->template->extra_getopt_spec);
local
@ARGV
=
@args
;
(
$opt
,
$usage
) = describe_options(
$desc
,
@new_spec
);
}
my
%template_var_names
= (
(
map
{
$_
->{name} =>
$opt
->${\
$_
->{name}} } @{
$usage
->{options}}),
name
=> template_as_name(
$opt
->as),
namespace
=>
$opt
->as,
project_fullpath
=>
do
{
my
$path
= path(
split
(
'::'
,
$opt
->as));
"$path"
},
name_lowercase
=>
lc
(template_as_name(
$opt
->as)),
name_lc
=>
lc
(template_as_name(
$opt
->as)),
( run in 0.595 second using v1.01-cache-2.11-cpan-49f99fa48dc )