Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
eg
lib/Getopt
t
.gitignore
.travis.yml
LICENSE
META6.json
README.md

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.

You can’t perform that action at this time.