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

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

arg aaa => (
    isa      => 'Str',
    required => 1,
    comment  => 'some kind of arg',
);

arg bbb => (
    isa     => 'Str',
    comment => 'other some kind of arg',
    default => 'meh',
);

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

opt help => ( ishelp => 1 );

opt message => (
    isa     => 'Str',
    alias   => 'm',
    comment => 'possibly very long option',
);

opt required => (
    isa      => 'Str',
    alias    => 'r',
    comment  => 'a very necessary option',
    required => 1,
);

opt quiet => (
    isa     => 'Flag',
    comment => 'work quietly',
    alias   => 'q',
);

my $opts = eval { optargs };
my $err  = $@;
my $ref  = ref $err;
die "$err\n$ref\n" if $ref;
die $err           if $err;

print Dumper $opts;
