NAME Dist::Zilla::Plugin::GenPericmdScript - Generate Perinci::CmdLine script VERSION This document describes version 0.424 of Dist::Zilla::Plugin::GenPericmdScript (from Perl distribution Dist-Zilla-Plugin-GenPericmdScript), released on 2022-01-22. SYNOPSIS In dist.ini: ; generate a script, by default called script/check-palindrome [GenPericmdScript] url=/My/Palindrome/check_palindrome ; generate another script, called script/lssrv [GenPericmdScript / Gen_lssrv] url=/My/App/list_servers name=lssrv After build, "script/check-palindrome" and "script/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 (SCRIPT SPECIFICATION) allow_prereq Boolean. Will be passed to Perinci::CmdLine::Gen backend. allow_unknown_opts Boolean, default false. Will be passed to Perinci::CmdLine object construction code. cmdline String. 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. code_after_end String. code_before_instantiate_cmdline String. config_dirs Array of strings. Will be passed to Perinci::CmdLine object construction code. config_filename String or array of strings. Will be passed to Perinci::CmdLine object construction code. copt_help_enable Boolean, default true. Will be passed to Perinci::CmdLine::Gen backend. Can be used to disable `--help` in generated CLI. copt_help_getopt String. Will be passed to Perinci::CmdLine::Gen backend. Can be used to change `--help` in generated CLI to some other option name. copt_version_enable Boolean, default true. Will be passed to Perinci::CmdLine::Gen backend. Can be used to disable `--version in generated CLI`. copt_version_getopt String. Will be passed to Perinci::CmdLine::Gen backend. Can be used to change the `--version` in generated CLI to some other option name. default_format String. Passed to Perinci::CmdLine object construction code. default_log_level String. 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 Boolean, default false. Will be passed to Perinci::CmdLine object construction code (as "log"). exclude_package_functions_match Regex. Will be passed to Perinci::CmdLine::Gen backend. extra_urls_for_version Comma-separated string, will be passed to Perinci::CmdLine object construction code (as array). include_package_functions_match Regex. Will be passed to Perinci::CmdLine::Gen backend. load_modules Array of strings. Extra modules to load in the generated script. name String. Name of script to create. Default will be taken from function (or package) name, with "_" replaced to "-". pass_cmdline_object Boolean, default false. Will be passed to Perinci::CmdLine object construction code. per_arg_json Boolean. Will be passed to Perinci::CmdLine::Gen backend. per_arg_yaml Boolean. Will be passed to Perinci::CmdLine::Gen backend. prefer_lite Boolean, default true. If set to 0 and you are using "Perinci::CmdLine::Any", "-prefer_lite" option will be passed in the code. read_config Boolean, default true. Will be passed to Perinci::CmdLine::Gen backend. Can be used to prevent the generated CLI from reading from config files. read_env Bool, default true. Will be passed to Perinci::CmdLine::Gen backend. Can be used to prevent the genreated CLI from reading from environment variable. skip_format Boolean. Passed to Perinci::CmdLine object construction code. ssl_verify_hostname Boolean, default true. 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. subcommands String. For creating a CLI script with subcommands. Value is a whitespace-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 Boolean. Will be passed to Perinci::CmdLine::Gen backend. summary String. Will be passed to Perinci::CmdLine::Gen backend (as "script_summary"). url String, required. 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. use_utf8 Boolean. Passed to Perinci::CmdLine object construction code. CONFIGURATION (OTHER) inline_generate_completer => bool (default: 1) Perinci::CmdLine::Inline-generated scripts currently cannot do shell completion on its own, but relies on a separate completer script (e.g. if the script is "script/foo" then the completer will be generated at "script/_foo"). This option can be used to suppress the generation of completer script. build_load_modules => array[str] Load modules during build process. HOMEPAGE Please visit the project's homepage at . SOURCE Source repository is at . SEE ALSO Perinci::CmdLine, the kind of CLI script this plugin is generating. Perinci and Rinci, for the background information. Dist::Zilla::Plugin::Perinci::CmdLine, if you are building "Perinci::CmdLine::*" distribution. AUTHOR perlancar CONTRIBUTOR Steven Haryanto CONTRIBUTING To contribute, you can send patches by email/via RT, or send pull requests on GitHub. Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via: % prove -l If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla plugin and/or Pod::Weaver::Plugin. Any additional steps required beyond that are considered a bug and can be reported to me. COPYRIGHT AND LICENSE This software is copyright (c) 2022, 2020, 2018, 2017, 2016, 2015, 2014 by perlancar . This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. BUGS Please report any bugs or feature requests on the bugtracker website When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.