Acme-CPANModules-GetoptModules

 view release on metacpan or  search on metacpan

LICENSE  view on Meta::CPAN

    a) cause the modified files to carry prominent notices stating that
    you changed the files and the date of any change; and

    b) cause the whole of any work that you distribute or publish, that
    in whole or in part contains the Program or any part thereof, either
    with or without modifications, to be licensed at no charge to all
    third parties under the terms of this General Public License (except
    that you may choose to grant warranty protection to some or all
    third parties, at your option).

    c) If the modified program normally reads commands interactively when
    run, you must cause it, when started running for such interactive use
    in the simplest and most usual way, to print or display an
    announcement including an appropriate copyright notice and a notice
    that there is no warranty (or else, saying that you provide a
    warranty) and that users may redistribute the program under these
    conditions, and telling the user how to view a copy of this General
    Public License.

    d) You may charge a fee for the physical act of transferring a
    copy, and you may at your option offer warranty protection in

LICENSE  view on Meta::CPAN

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) 19xx name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License.  Of course, the
commands you use may be called something other than `show w' and `show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  program `Gnomovision' (a program to direct compilers to make passes
  at assemblers) written by James Hacker.

META.json  view on Meta::CPAN

{
   "abstract" : "Modules that parse command-line options",
   "author" : [
      "perlancar <perlancar@cpan.org>"
   ],
   "dynamic_config" : 0,
   "generated_by" : "Dist::Zilla version 6.014, CPAN::Meta::Converter version 2.150010",
   "license" : [
      "perl_5"
   ],
   "meta-spec" : {
      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",

META.json  view on Meta::CPAN

            "Getopt::Complete" : "0",
            "Getopt::Declare" : "0",
            "Getopt::Euclid" : "0",
            "Getopt::Kingpin" : "0",
            "Getopt::Long" : "0",
            "Getopt::Long::Complete" : "0",
            "Getopt::Long::Descriptive" : "0",
            "Getopt::Long::EvenLess" : "0",
            "Getopt::Long::Less" : "0",
            "Getopt::Long::More" : "0",
            "Getopt::Long::Subcommand" : "0",
            "Getopt::Lucid" : "0",
            "Getopt::Modular" : "0",
            "Getopt::Simple" : "0",
            "Getopt::Std" : "0",
            "Getopt::Std::Strict" : "0",
            "Getopt::Tiny" : "0",
            "Getopt::Valid" : "0",
            "MooX::Options" : "0",
            "MooseX::Getopt" : "0",
            "Opt::Imistic" : "0",

META.json  view on Meta::CPAN

                        "class" : "Pod::Weaver::Section::Region",
                        "name" : "@Author::PERLANCAR/postlude",
                        "version" : "4.015"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Completion::GetoptLongComplete",
                        "name" : "@Author::PERLANCAR/Completion::GetoptLongComplete",
                        "version" : "0.08"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Completion::GetoptLongSubcommand",
                        "name" : "@Author::PERLANCAR/Completion::GetoptLongSubcommand",
                        "version" : "0.04"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Completion::GetoptLongMore",
                        "name" : "@Author::PERLANCAR/Completion::GetoptLongMore",
                        "version" : "0.001"
                     },
                     {
                        "class" : "Pod::Weaver::Section::Homepage::DefaultCPAN",
                        "name" : "@Author::PERLANCAR/Homepage::DefaultCPAN",

META.yml  view on Meta::CPAN

---
abstract: 'Modules that parse command-line options'
author:
  - 'perlancar <perlancar@cpan.org>'
build_requires:
  File::Spec: '0'
  IO::Handle: '0'
  IPC::Open3: '0'
  Test::More: '0'
configure_requires:
  ExtUtils::MakeMaker: '0'
dynamic_config: 0

META.yml  view on Meta::CPAN

              version: '4.015'
            -
              class: Pod::Weaver::Section::Region
              name: '@Author::PERLANCAR/postlude'
              version: '4.015'
            -
              class: Pod::Weaver::Section::Completion::GetoptLongComplete
              name: '@Author::PERLANCAR/Completion::GetoptLongComplete'
              version: '0.08'
            -
              class: Pod::Weaver::Section::Completion::GetoptLongSubcommand
              name: '@Author::PERLANCAR/Completion::GetoptLongSubcommand'
              version: '0.04'
            -
              class: Pod::Weaver::Section::Completion::GetoptLongMore
              name: '@Author::PERLANCAR/Completion::GetoptLongMore'
              version: '0.001'
            -
              class: Pod::Weaver::Section::Homepage::DefaultCPAN
              name: '@Author::PERLANCAR/Homepage::DefaultCPAN'
              version: '0.05'
            -

Makefile.PL  view on Meta::CPAN

# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.014.
use strict;
use warnings;

use 5.010001;

use ExtUtils::MakeMaker;

my %WriteMakefileArgs = (
  "ABSTRACT" => "Modules that parse command-line options",
  "AUTHOR" => "perlancar <perlancar\@cpan.org>",
  "CONFIGURE_REQUIRES" => {
    "ExtUtils::MakeMaker" => 0
  },
  "DISTNAME" => "Acme-CPANModules-GetoptModules",
  "LICENSE" => "perl",
  "MIN_PERL_VERSION" => "5.010001",
  "NAME" => "Acme::CPANModules::GetoptModules",
  "PREREQ_PM" => {
    "strict" => 0,

README  view on Meta::CPAN

NAME
    Acme::CPANModules::GetoptModules - Modules that parse command-line
    options

VERSION
    This document describes version 0.001 of
    Acme::CPANModules::GetoptModules (from Perl distribution
    Acme-CPANModules-GetoptModules), released on 2020-04-16.

DESCRIPTION
    Modules that parse command-line options.

INCLUDED MODULES
    *   Getopt::Std

    *   Getopt::Long

    *   Getopt::Tiny

    *   Getopt::Long::Descriptive

README  view on Meta::CPAN

    *   Smart::Options

    *   Getopt::ArgParse

    *   Getopt::Kingpin

    *   Getopt::Complete

    *   Getopt::Long::Complete

    *   Getopt::Long::Subcommand

    *   Getopt::Long::Less

    *   Getopt::Long::EvenLess

FEATURE COMPARISON MATRIX
     +---------------------------+---------------+------------------+----------------------+---------------+----------+----------------+
     | module                    | auto_help *1) | auto_version *2) | uses_getopt_long *3) | uses_spec *4) | file *5) | subcommand *6) |
     +---------------------------+---------------+------------------+----------------------+---------------+----------+----------------+
     | Getopt::Std               | no *7)        | no *8)           | no                   | yes           | N/A      | N/A            |
     | Getopt::Long              | yes           | yes              | yes                  | yes           | N/A      | N/A            |
     | Getopt::Tiny              | no            | no               | no                   | yes           | N/A      | N/A            |
     | Getopt::Long::Descriptive | yes           | no               | yes                  | yes           | N/A      | N/A            |
     | Getopt::Long::More        | yes           | yes              | yes                  | yes           | no       | no             |
     | Getopt::Simple            | yes           | yes              | yes                  | yes           | N/A      | N/A            |
     | Getopt::Compact           | yes           | yes              | yes                  | yes           | N/A      | N/A            |
     | Opt::Imistic              | no            | no               | no                   | no            | N/A      | N/A            |
     | Getopt::Valid             | yes           | yes              | yes                  | yes           | N/A      | N/A            |

README  view on Meta::CPAN

     | App::Options              | yes           | yes              | no                   | yes           | yes      | N/A            |
     | MooseX::Getopt            | yes           | yes              | yes *9)              | yes           | no *10)  | N/A            |
     | MooX::Options             | yes           | no               | yes *11)             | yes           | yes      | N/A            |
     | Getopt::Attribute         | yes           | yes              | yes                  | yes           | N/A      | N/A            |
     | Getopt::Modular           | yes           | yes              | yes                  | yes           | N/A      | N/A            |
     | Smart::Options            | yes           | no               | no                   | yes           | yes      | yes            |
     | Getopt::ArgParse          | no            | no               | yes                  | yes           | N/A      | yes            |
     | Getopt::Kingpin           | yes           | yes              | no                   | yes           | N/A      | yes            |
     | Getopt::Complete          | no            | no               | no                   | yes           | N/A      | N/A            |
     | Getopt::Long::Complete    | yes           | yes              | yes                  | yes           | N/A      | N/A            |
     | Getopt::Long::Subcommand  | yes           | yes              | yes                  | yes           | N/A      | yes            |
     | Getopt::Long::Less        | no            | no               | no                   | yes           | N/A      | N/A            |
     | Getopt::Long::EvenLess    | no            | no               | no                   | yes           | N/A      | N/A            |
     +---------------------------+---------------+------------------+----------------------+---------------+----------+----------------+

    Notes:

    1. auto_help: Whether the module can generate automatic help message
    (usually from spec) when user specifies something like --help
    2. auto_version: Whether the module can generate automatic version
    message when user specifies something like --version
    3. uses_getopt_long: Whether module uses Getopt::Long (or is
    Getopt::Long itself)
    4. uses_spec: Whether user need to specify some sort of "spec" (list of
    options and potentially more details)
    5. file: Whether the module supports getting options from a file
    6. subcommand: Whether the module supports subcommands
    7. Only calls main::HELP_MESSAGE
    8. Only calls main::VERSION_MESSAGE
    9. Uses Getopt::Long::Descriptive
    10. Needs separate module: MooseX::ConfigFromFile or
    MooseX::SimpleConfig
    11. Uses Getopt::Long::Descriptive

FAQ
  What are ways to use this module?
    Aside from reading it, you can install all the listed modules using

lib/Acme/CPANModules/GetoptModules.pm  view on Meta::CPAN

our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
our $DATE = '2020-04-16'; # DATE
our $DIST = 'Acme-CPANModules-GetoptModules'; # DIST
our $VERSION = '0.001'; # VERSION

use 5.010001;
use strict;
use warnings;

our $LIST = {
    summary => 'Modules that parse command-line options',
    entry_features => {
        uses_spec => {summary => 'Whether user need to specify some sort of "spec" (list of options and potentially more details)'},
        uses_getopt_long => {summary => 'Whether module uses Getopt::Long (or is Getopt::Long itself)'},
        auto_help => {summary => 'Whether the module can generate automatic help message (usually from spec) when user specifies something like --help'},
        auto_version => {summary => 'Whether the module can generate automatic version message when user specifies something like --version'},
        file => {summary => 'Whether the module supports getting options from a file'},
        subcommand => {summary => 'Whether the module supports subcommands'},
    },
    entries => [
        {
            module => 'Getopt::Std',
            features => {
                uses_spec => 1,
                uses_getopt_long => 0,
                auto_help => {value=>0, summary=>'Only calls main::HELP_MESSAGE'},
                auto_version => {value=>0, summary=>'Only calls main::VERSION_MESSAGE'},
            },

lib/Acme/CPANModules/GetoptModules.pm  view on Meta::CPAN

            },
        },
        {
            module => 'Getopt::Long::More',
            features => {
                uses_spec => 1,
                uses_getopt_long => 1,
                auto_help => 1,
                auto_version => 1,
                file => 0, # planned
                subcommand => 0, # planned
            },
        },
        {
            module => 'Getopt::Simple',
            features => {
                uses_spec => 1,
                uses_getopt_long => 1,
                auto_help => 1,
                auto_version => 1,
            },

lib/Acme/CPANModules/GetoptModules.pm  view on Meta::CPAN

        },
        # App::Cmd
        # App::Spec
        {
            module => 'Smart::Options',
            features => {
                uses_spec => 1,
                uses_getopt_long => 0,
                auto_help => 1,
                auto_version => 0,
                subcommand => 1,
                file => 1,
            },
        },
        {
            module => 'Getopt::ArgParse',
            features => {
                uses_spec => 1,
                uses_getopt_long => 1,
                auto_help => 0, #?
                auto_version => 0, #?
                subcommand => 1,
            },
        },
        {
            module => 'Getopt::Kingpin',
            features => {
                uses_spec => 1,
                uses_getopt_long => 0,
                auto_help => 1, #?
                auto_version => 1, #?
                subcommand => 1,
            },
        },
        {
            module => 'Getopt::Complete',
            features => {
                uses_spec => 1,
                uses_getopt_long => 0,
                auto_help => 0, #?
                auto_version => 0, #?
            },

lib/Acme/CPANModules/GetoptModules.pm  view on Meta::CPAN

        {
            module => 'Getopt::Long::Complete',
            features => {
                uses_spec => 1,
                uses_getopt_long => 1,
                auto_help => 1,
                auto_version => 1,
            },
        },
        {
            module => 'Getopt::Long::Subcommand',
            features => {
                uses_spec => 1,
                uses_getopt_long => 1,
                auto_help => 1,
                auto_version => 1,
                subcommand => 1,
            },
        },
        {
            module => 'Getopt::Long::Less',
            features => {
                uses_spec => 1,
                uses_getopt_long => 0,
                auto_help => 0,
                auto_version => 0,
            },

lib/Acme/CPANModules/GetoptModules.pm  view on Meta::CPAN

            },
        },
        # Getopt::Panjang
        # Perinci::CmdLine
        # ScriptX
    ],

};

1;
# ABSTRACT: Modules that parse command-line options

__END__

=pod

=encoding UTF-8

=head1 NAME

Acme::CPANModules::GetoptModules - Modules that parse command-line options

=head1 VERSION

This document describes version 0.001 of Acme::CPANModules::GetoptModules (from Perl distribution Acme-CPANModules-GetoptModules), released on 2020-04-16.

=head1 DESCRIPTION

Modules that parse command-line options.

=head1 INCLUDED MODULES

=over

=item * L<Getopt::Std>

=item * L<Getopt::Long>

=item * L<Getopt::Tiny>

lib/Acme/CPANModules/GetoptModules.pm  view on Meta::CPAN

=item * L<Smart::Options>

=item * L<Getopt::ArgParse>

=item * L<Getopt::Kingpin>

=item * L<Getopt::Complete>

=item * L<Getopt::Long::Complete>

=item * L<Getopt::Long::Subcommand>

=item * L<Getopt::Long::Less>

=item * L<Getopt::Long::EvenLess>

=back

=head1 FEATURE COMPARISON MATRIX

 +---------------------------+---------------+------------------+----------------------+---------------+----------+----------------+
 | module                    | auto_help *1) | auto_version *2) | uses_getopt_long *3) | uses_spec *4) | file *5) | subcommand *6) |
 +---------------------------+---------------+------------------+----------------------+---------------+----------+----------------+
 | Getopt::Std               | no *7)        | no *8)           | no                   | yes           | N/A      | N/A            |
 | Getopt::Long              | yes           | yes              | yes                  | yes           | N/A      | N/A            |
 | Getopt::Tiny              | no            | no               | no                   | yes           | N/A      | N/A            |
 | Getopt::Long::Descriptive | yes           | no               | yes                  | yes           | N/A      | N/A            |
 | Getopt::Long::More        | yes           | yes              | yes                  | yes           | no       | no             |
 | Getopt::Simple            | yes           | yes              | yes                  | yes           | N/A      | N/A            |
 | Getopt::Compact           | yes           | yes              | yes                  | yes           | N/A      | N/A            |
 | Opt::Imistic              | no            | no               | no                   | no            | N/A      | N/A            |
 | Getopt::Valid             | yes           | yes              | yes                  | yes           | N/A      | N/A            |

lib/Acme/CPANModules/GetoptModules.pm  view on Meta::CPAN

 | App::Options              | yes           | yes              | no                   | yes           | yes      | N/A            |
 | MooseX::Getopt            | yes           | yes              | yes *9)              | yes           | no *10)  | N/A            |
 | MooX::Options             | yes           | no               | yes *11)             | yes           | yes      | N/A            |
 | Getopt::Attribute         | yes           | yes              | yes                  | yes           | N/A      | N/A            |
 | Getopt::Modular           | yes           | yes              | yes                  | yes           | N/A      | N/A            |
 | Smart::Options            | yes           | no               | no                   | yes           | yes      | yes            |
 | Getopt::ArgParse          | no            | no               | yes                  | yes           | N/A      | yes            |
 | Getopt::Kingpin           | yes           | yes              | no                   | yes           | N/A      | yes            |
 | Getopt::Complete          | no            | no               | no                   | yes           | N/A      | N/A            |
 | Getopt::Long::Complete    | yes           | yes              | yes                  | yes           | N/A      | N/A            |
 | Getopt::Long::Subcommand  | yes           | yes              | yes                  | yes           | N/A      | yes            |
 | Getopt::Long::Less        | no            | no               | no                   | yes           | N/A      | N/A            |
 | Getopt::Long::EvenLess    | no            | no               | no                   | yes           | N/A      | N/A            |
 +---------------------------+---------------+------------------+----------------------+---------------+----------+----------------+


Notes:

=over

=item 1. auto_help: Whether the module can generate automatic help message (usually from spec) when user specifies something like --help

=item 2. auto_version: Whether the module can generate automatic version message when user specifies something like --version

=item 3. uses_getopt_long: Whether module uses Getopt::Long (or is Getopt::Long itself)

=item 4. uses_spec: Whether user need to specify some sort of "spec" (list of options and potentially more details)

=item 5. file: Whether the module supports getting options from a file

=item 6. subcommand: Whether the module supports subcommands

=item 7. Only calls main::HELP_MESSAGE

=item 8. Only calls main::VERSION_MESSAGE

=item 9. Uses Getopt::Long::Descriptive

=item 10. Needs separate module: MooseX::ConfigFromFile or MooseX::SimpleConfig

=item 11. Uses Getopt::Long::Descriptive

t/00-compile.t  view on Meta::CPAN


use File::Spec;
use IPC::Open3;
use IO::Handle;

open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";

my @warnings;
for my $lib (@module_files)
{
    # see L<perlfaq8/How can I capture STDERR from an external command?>
    my $stderr = IO::Handle->new;

    diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} }
            $^X, @switches, '-e', "require q[$lib]"))
        if $ENV{PERL_COMPILE_TEST_DEBUG};

    my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]");
    binmode $stderr, ':crlf' if $^O eq 'MSWin32';
    my @_warnings = <$stderr>;
    waitpid($pid, 0);



( run in 0.856 second using v1.01-cache-2.11-cpan-f56aa216473 )