SYNOPSIS

    In dist.ini:

     ; generate a script, by default called bin/check-palindrome
     [GenPericmdScript]
     url=/My/Palindrome/check_palindrome
    
     ; generate another script, called bin/lssrv
     [GenPericmdScript / Gen_lssrv]
     url=/My/App/list_servers
     name=lssrv

    After build, bin/check-palindrome and bin/lssrv will be created.

DESCRIPTION

    After you add Rinci metadata to your function, e.g.:

     package My::Palindrome;
     $SPEC{check_palindrome} = {
         v => 1.1,
         args => {
             text => { schema=>'str*', req=>1, pos=>0 },
             ci   => { schema=>'bool*', cmdline_aliases=>{i=>{}} },
         },
         result_naked => 1,
     };
     sub check_palindrome {
         my %args = @_;
         my $text = $args{ci} ? lc($args{text}) : $args{text};
         $text eq reverse($text);
     }

    you can create a command-line script for that function that basically
    is not much more than:

     #!perl
     use Perinci::CmdLine::Any;
     Perinci::CmdLine::Any->new(url => '/My/Palindrome/check_palindrome');

    This Dist::Zilla plugin lets you automate the creation of such scripts.

    Creating scripts. To create a single script, put this in dist.ini:

     [GenPericmdScript]
     ;required
     url=/My/Palindrome/check_palindrome
     ;optional
     abstract=Check if a text is a palindrome
     ; ...

    To create more scripts, load the plugin again using the [Plugin/Name]
    syntax, e.g.:

     [GenPericmdScript / GenAnotherScript]
     ...

CONFIGURATION

 url* => str

    Riap URL. If the script does not contain subcommand, this should refer
    to a function URL. If the script contains subcommands, this should
    usually refer to a package URL.

 name => str

    Name of script to create. Default will be taken from function name,
    with _ replaced to -.

 cmdline => str

    Select module to use. Default is Perinci::CmdLine::Any, but you can set
    this to classic (equals to Perinci::CmdLine::Classic), any
    (Perinci::CmdLine::Any), or lite (Perinci::CmdLine::Lite) or module
    name.

 prefer_lite => bool (default: 1)

    If set to 0 and you are using Perinci::CmdLine::Any, -prefer_lite
    option will be passed in the code.

 default_log_level => str

    If set, will add this code to the generated script:

     BEGIN { no warnings; $main::Log_Level = "..." }

    This can be used if you want your script to be verbose by default, for
    example.

 enable_log => bool

    Will be passed to Perinci::CmdLine object construction code (as log).

 extra_urls_for_version => str

    Comma-separated string, will be passed to Perinci::CmdLine object
    construction code (as array).

 config_filename => str

    Will be passed to Perinci::CmdLine object construction code.

 ssl_verify_hostname => bool (default: 1)

    If set to 0, will add this code to the generated script:

     $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;

    This can be used if the Riap function URL is https and you don't want
    to verify.

 snippet_before_instantiate_cmdline => str

    This is like the configuration, but per-script.

 subcommands => str

    For creating a CLI script with subcommands. Value is a comma-separated
    entries of subcommand specification. Each subcommand specification must
    be in the form of SUBCOMMAND_NAME:URL[:SUMMARY]. Example:

     delete:/My/App/delete_item, add:/My/App/add_item, refresh:/My/App/refresh_item:Refetch an item from source

 subcommands_from_package_functions => bool

    Will be passed to App::GenPericmdScript::gen_perinci_cmdline_script()
    backend.

 include_package_functions_match => re

    Will be passed to App::GenPericmdScript::gen_perinci_cmdline_script()
    backend.

 exclude_package_functions_match => re

    Will be passed to App::GenPericmdScript::gen_perinci_cmdline_script()
    backend.

SEE ALSO

    Rinci

    Pod::Weaver::Plugin::Rinci to fill more stuffs to the POD of the
    generated script.

    Dist::Zilla::Plugin::Rinci::* for plugins that utilize Rinci metadata.

