On 2020-05-11 21:19, Peter Pentchev wrote:
#!/usr/bin/env raku

use v6.d;

use Getopt::Long;

sub cmd_install($cmd, Array[Str] :$enablerepo = [], Bool :$y = False, *@rest 
--> int)
{
        say 'install';
        dd $cmd;
        dd @rest;
        dd $enablerepo;
        dd $y;
        return 0;
}

sub cmd_list($cmd, Array[Str] :$enablerepo = [], *@rest --> int)
{
        say 'list';
        dd $cmd;
        dd @rest;
        dd $enablerepo;
        return 42;
}

my %HANDLERS = (
        install => &cmd_install,
        
        # "list" doesn't care about the "-y" parameter, so skip it
        list => -> $cmd, :$enablerepo = [], :$y = False, *@rest --> int {
                cmd_list $cmd, :$enablerepo, |@rest
        },
);

sub note-fatal(Str:D $msg)
{
        $msg.note;
        exit 1;
}

{
        my $opts = get-options(
            "enablerepo=s@",
            "y",
        );
        CATCH { when Getopt::Long::Exception { .message.note; exit 1 } };
        dd $opts;

        note-fatal 'No command specified' unless $opts.elems;
        my $cmd = $opts[0];
        my $handler = %HANDLERS{$cmd};
        note-fatal "Unknown command '$cmd'" unless $handler;
        exit $handler(|$opts);
}


How do I use it?  Where are the options declared?

$ GetOptLongTest2.pl6
Capture $opts = \()
No command specified

$ GetOptLongTest2.pl6 --help
Unknown option help





--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Computers are like air conditioners.
They malfunction when you open windows
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Reply via email to