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-style
、gnu-style
、bsd-style
.etc.
It support Hash
、Array
option compared to traditional command line
tools. In addition, it also support radio
、multi
group mechanism
which can manage option realtionship. And to handle non-option argument,
it provide main
、pos
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 optiona
,b
andc
.Multiple style provide option arguments, such as
-a=b
,-a b
,-ab
is mean set the value of optiona
tob
.Deactivate-style support, mean you can disable some option by using
-/o
.Type supported, such as
Boolean
,Integer
,Array
, andString
, 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 …
andscript.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.
- With sub such as
Default value of Option
Load option from class/sub (not implement)
Load from the configure file easily
- Refer the example make-cpan-pack.
Thing can Custom by user
Help generator.
Option Parser.
Style supported and the priority of them.
The order of
Option
value assignment andPos
,Cmd
process.
Document
Example
App::snippet
App::FindSource
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