No description, website, or topics provided.
Other
Switch branches/tags
Nothing to show
Latest commit fc391ee Oct 30, 2016 @tokuhirom committed on GitHub Merge pull request #2 from jonathanstowe/travis
Another Travis fix
Permalink
Failed to load latest commit information.
eg Added 'get-options' function Oct 5, 2015
lib/Getopt
t
.gitignore Add .precomp to the .gitignore Oct 30, 2016
.travis.yml Remove the un-necessary script section Oct 30, 2016
LICENSE initial import Oct 4, 2015
META6.json Removing leading 'v' from META6.json Jun 25, 2016
README.md regen docs Oct 6, 2015

README.md

Build Status

NAME

Getopt::Tiny - Tiny option parser for Perl6

SYNOPSIS

use v6;

use Getopt::Tiny;

my $opts = { host => '127.0.0.1', port => 5000 };

get-options($opts, <
    e=s
    I=s@
    p=i
    h|host=s
>);

DESCRIPTION

Getopt::Tiny is tiny command line option parser library for Perl6.

FEATURES

  • Fluent interface

  • Built-in pod2usage feature

MOTIVATION

Perl6 has a great built-in command line option parser. But it's not flexible. It's not perfect for all cases.

Function interface

get-options(Hash $opts, Array[Str] $definitions, Bool :$pass-through=False)

Here is a synopsis code:

get-options($args, <
    e=s
    I=s@
    p=i
    h|host=s
>);

$definitions' grammar is here:

token TOP { <key> '=' <type> }
token key { <short> [ '|' <long> ]?  | <long> }

token short { <[a..z A..Z]> }
token long { <[a..z A..Z]> <[a..z A..Z 0..9]>+ }

token type {
    's'  | # str
    's@' | # array of string
    '!'  | # bool
    'i'    # int
}

Parse options from @*ARGS.

$opts should be Hash. This function writes result to $opts.

$definitions should be one of following style.

If you want to pass-through unknown option, you can pass :pass-through as a named argument like following:

get-options($x, $y, :pass-through);

This function modifies @*ARGS and $PROCESS::ARGFILES.

OO Interface

METHODS

my $opt = Getopt::Tiny.new()

Create new instance of the parser.

$opt.str($opt, $callback)

If $opt has 1 char, it's equivalent to $opt.str($opt, Nil, $callback), $opt.str(Nil, $opt, $callback) otherwise.

$opt.str($short, $long, $callback)

Add string option.

$short accepts -Ilib or -I lib form. $long accepts --host=lib or --host lib form.

Argument of $callback is Str.

$opt.int($opt, $callback)

If $opt has 1 char, it's equivalent to $opt.int($opt, Nil, $callback), $opt.int(Nil, $opt, $callback) otherwise.

$opt.int($short, $long, $callback)

Add integer option.

$short accepts -I3 or -I 3 form. $long accepts --port=5963 or --port 5963 form.

Argument of $callback is Int.

$opt.bool($opt, $callback)

If $opt has 1 char, it's equivalent to $opt.bool($opt, Nil, $callback), $opt.bool(Nil, $opt, $callback) otherwise.

$opt.bool($short, $long, $callback)

Add boolean option.

$short accepts -x form. $long accepts --man-pages or --no-man-pages form.

Argument of $callback is Bool.

$opt.parse(@args)

Run the option parser. Return values are positional arguments.

This operation does not modify @*ARGS and $PROCESS::ARGFILES.

pod2usage

This library shows POD's SYNOPSIS section in your script as help message, when it's available.

COPYRIGHT AND LICENSE

Copyright 2015 Tokuhiro Matsuno tokuhirom@gmail.com

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.