The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/local/bin/perl -W

# (X)Emacs mode: -*- cperl -*-

=head1 DESCRIPTION

No description

=head1 EXAMPLES

Z<>

=head1 BUGS

Z<>

=head1 REPORTING BUGS

Log them in gnats.

=head1 AUTHOR

Martyn J. Pearce C<fluffy@cpan.org>

=head1 SEE ALSO

Z<>

=cut

# Pragmas -----------------------------

require 5.005_62;
use strict;

# Utility -----------------------------

use Fatal              1.02 qw( :void close open seek sysopen );
use Fcntl              1.03 qw( :DEFAULT );
use Log::Info          1.09 qw( :DEFAULT :default_channels :log_levels );

# Package Master
use Getopt::Plus qw( :opt_types :exit_codes $PACKAGE );
# Fix version to make testing easier
BEGIN {
  our $VERSION = '0.01';
}

# Constants ---------------------------

my ($fail, $fail2, $fail3, $msg);

my $RSE =
  Getopt::Plus->new(scriptname => 'test-script-3',
                 scriptsumm => 'Test Getopt-Plus functionality',
                 check      => sub { # print STDERR "check\n";
                                     die "Message\n"
                                       if $msg;
                                     # Deliberately leave this to test
                                     # that 0 return *doesn't* cause failure
                                     return $fail3 ? 0 : 1;
                                   },
                 output_suffix => [ 'foo', 'bar' ],
                 initialize => sub { # print STDERR "initialize\n";
                                     $_[0]->die(ERR_USAGE, "Squeek\n")
                                       if defined $fail;
                                     $_[0]->die(ERR_UNKNOWN, "Squawk\n")
                                       if defined $fail2;
                                   },
                 finalize   => sub { # print STDERR "finalize\n"; 
                 },
                 end        => sub { # print STDERR "end\n"; 
                 },
                 main       => sub { # print STDERR "main\n"; 
                   my $rse = shift;
                   my ($in, $outs) = @_;
                   print "IN: $in\n";
                   print "OUT: $_\n"
                     for sort @$outs;
                 },
                 arg_ary    => '*',
                 argtype    => 'file',
                 copyright  => 'Copyright __CYEARS__ Martyn J. Pearce',
                 c_years    => [ 2002 ],
                 options    => [{ names   => [qw/ fail1 /],
                                  type    => OPT_BOOLEAN,
                                  linkage => \$fail,
                                },
                                { names   => [qw/ fail2 /],
                                  type    => OPT_BOOLEAN,
                                  linkage => \$fail2,
                                },
                                { names   => [qw/ fail3 /],
                                  type    => OPT_BOOLEAN,
                                  linkage => \$fail3,
                                  summary => "doesn't actually fail",
                                },
                                { names   => [qw/ msg /],
                                  type    => OPT_BOOLEAN,
                                  linkage => \$msg,
                                },
                               ],
                );

# Subrs ----------------------------------------------------------------------

sub initialize {
  my $rse = shift;
}

# Main -----------------------------------------------------------------------

$RSE->run;


__END__