#!/usr/bin/env perl
use strict;
use warnings;
use FindBin;
use lib 'lib';
use lib "$FindBin::Bin/../lib";
use Data::Dumper;
use OptArgs2;

$Data::Dumper::Indent   = 1;
$Data::Dumper::Sortkeys = 1;

$SIG{__DIE__} = sub {
    my $err = shift;
    my $ref = ref $err;
    die "$err\n$ref\n" if $ref;
    die $err           if $err;
};

my $opts = optargs(
    comment      => 'an example optargs-based command',
    show_default => 1,
    optargs      => [
        aaa => {
            isa      => 'Str',
            required => 1,
            comment  => 'some kind of arg',
        },

        bbb => {
            isa     => 'Str',
            comment => 'other some kind of arg',
            default => 'meh',
        },

        dump => {
            isa     => '--Flag',
            alias   => 'd',
            comment => 'print result using Data::Dumper',
            trigger => sub {
                require Data::Dumper;
                print Dumper $_[1];
            }
        },

        message => {
            isa     => '--Str',
            alias   => 'm',
            comment => 'possibly very long option',
        },

        other => {
            isa     => '--Str',
            default => 'some thing',
            comment => 'an option with a default',
        },

        required => {
            isa      => '--Str',
            alias    => 'r',
            comment  => 'a very necessary option',
            required => 1,
        },

        quiet => {
            isa     => '--Flag',
            comment => 'work quietly',
            alias   => 'q',
        },
    ],
);

print Dumper $opts;
