nysus has asked for the wisdom of the Perl Monks concerning the following question:

I've created a minting profile for creating new command line utilities based on MooseX::App::Cmd. In the skeleton directory of the minting profile, I have a generic name for the command: /bin/my_command. I also generate generically named commands in the Command directory: /lib/MyModule/Command/command1. Ideally, however, I'd like to be able to somehow pass the dzil new command the name of the script that goes in /bin and the commands in the Command directory because I'm lazy as hell (that and I'm just very curious to know how it can be done).

I searched around the various Dist::Zilla. I found the Dist::Zilla::Plugin::Run::AfterMint but it's not immediately obvious how I get the names of the files I want to this plugin through the new command, if it's possible at all.

$PM = "Perl Monk's";
$MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate Priest";
$nysus = $PM . ' ' . $MCF;
Click here if you love Perl Monks

Replies are listed 'Best First'.
Re: Dist::Zilla: Possible to create the name of newly minted file dynamically?
by nysus (Parson) on Feb 01, 2018 at 21:44 UTC

    A possible solution just hit me. The script run by AfterMint could prompt me for the name of the command line utility and the subcommands and then change the files accordingly.

    $PM = "Perl Monk's";
    $MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate Priest";
    $nysus = $PM . ' ' . $MCF;
    Click here if you love Perl Monks

Re: Dist::Zilla: Possible to create the name of newly minted file dynamically?
by nysus (Parson) on Feb 03, 2018 at 22:19 UTC

    I pulled this off with Dist::Zilla::Plugin::Hook::AfterMint which makes it easy to drop perl code into the profile.ini file like so:

    [Hook::AfterMint] . = use Term::Prompt; . = use File::Util; . = my $root = $_[0]->{mint_root}->canonpath; . = my $command = prompt('e', "Enter command name: ", '', '', '[a-z]+ +'); . = $command =~ s/\s//g; . = my $old_file = File::Spec->catfile($root, 'bin', 'my_command'); . = my $new_file = File::Spec->catfile($root, 'bin', $command); . = rename $old_file, $new_file; . = my $file = File::Util->new(); . = $file->write_file(file => $new_file, mode => 'append', content => +"\n# PODNAME: $command"); . = my $subcmds = prompt('x', "Enter subcommand names: ", '', ''); . = $subcmds =~ s/\s//g; <snip>More code to generate the subcommands here</snip>

    $PM = "Perl Monk's";
    $MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate Priest";
    $nysus = $PM . ' ' . $MCF;
    Click here if you love Perl Monks