Skip to content
An advance command line parse module.
Other Perl
  1. Other 96.9%
  2. Perl 3.1%
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc/Getopt
lib/Getopt
sample
t
.appveyor.yml
.gitignore
.travis.yml
LICENSE
META6.json
README.adoc
README.zh.adoc
UPDATE

README.adoc

perl6-getopt-advance

Build Status Windows Build Status

An advance command line parse tool replace Getopt::Kinoko

Description

Getopt::Advance is a powerful command line option parsing module, it suppot many style such as: unix-stylegnu-stylebsd-style.etc. It support HashArray option compared to traditional command line tools. In addition, it also support radiomulti group mechanism which can manage option realtionship. And to handle non-option argument, it provide mainpos and cmd feature.

Usage

Try it

Normal version

use Getopt::Advance;

my OptionSet $os .= new();

$os.push(
    "h|help=b",
    "print help message.",
    callback => sub ($, $) {
        say "The h option is set by user";
    });

&getopt($os);
say "Exit!";

With react

use Getopt::Advance;

my OptionSet $os .= new();

$os.push("h|help=b", "print help message.");

react {
    whenever $os.Supply("h") {
        say "The h option is set by user";
    }
    whenever &getopt($os) {
        say "Exit!";
        done;
    }
}

Feature

The feature support by this module, more information please refer documents.

  • Option with type

    • Long and short option supported, such as -o and --option.

    • X-style option supported, such as -option.

    • Combing-style option supported, such as -abc is same as -a -b -c.

    • BSD-style supported, such as abc is set the boolean option a, b and c.

    • Multiple style provide option arguments, such as -a=b, -a b, -ab is mean set the value of option a to b.

    • Deactivate-style support, mean you can disable some option by using -/o.

    • Type supported, such as Boolean, Integer, Array, and String, i.e. will check the option argument provide by user.

  • Non Option with index

    • Sub command supported, it can provide different feature to user, such as script.p6 add …​ and script.p6 del …​.

    • Position argument base on index supported, such as script.p6 <file> will capture the first non-option argument provide by user.

    • Main function supported. Main function will call with all the non-option arguments.

  • Option rule

    • With radio group, can only set one by user, or must set one by user.

    • With multi group, can limiting the options set at least one.

    • Must be set by user if optional of option is False.

  • Callback of Option/Non Option

    • Can set the callback of Option/Non Option, it will be called when it set by user.

  • Auto-generated help, version message

    • It can generate help and version message for you.

    • If autohv is set, it can automate print help or version message when corresponding option set by user.

  • PreParser

    • With the parser, you can process some option first, and process other with another call.

  • Interrupt the program

    • With sub such as ga-want-helper, you can interrupt the program and print help immediately.

  • Default value of Option

  • Load option from class/sub (not implement)

  • Load from the configure file easily

  • Thing can Custom by user

    • Help generator.

    • Option Parser.

    • Style supported and the priority of them.

    • The order of Option value assignment and Pos, Cmd process.

Document

Example

App::snippet

xcp

A script display the copy progress.

pdnf

pdnf added some sort command to dnf(package manager of some linux distribution).

find-file

usage

help
$ ./find-file.p6
Usage:
./sample/find-file.p6 [directory] OPTIONs

-d               specify file type to directory

-v|--version     print program version.

--size=<integer> the minimum size limit of file.

-?               same as -h.

-h|--help        print this help.

-f               specify file type to normal file

-l               specify file type to symlink
find
$ ./find-file.p6 ../t '1\d.*t$'
../t/11-bsd-style.t
../t/10-x-style.t

Installation

  • install with zef

    zef install Getopt::Advance

Lincese

The MIT License (MIT).

TODO

  • Update documents

  • Update subs feature

You can’t perform that action at this time.