Getopt-CommandLineExports
Getopt::CommandLineExports - Allow suroutines within a script to export command line options with bash auto completion
Example Code:
use strict;
use warnings;
use Getopt::CommandLineExports qw(®AC &parseArgsByPosition &parseArgs
&checkArgs $scriptName @exportedSubs %cmdLines);
$scriptName = qq[TestCommandLineExports];
%cmdLines = (
twoScalars => [qw/ ONE=s TWO=s /],
oneHash => [qw/ ONE=s% /],
oneList => [qw/ ONE=s@ /],
);
sub twoScalars
{
my %h = (
ONE => undef,
TWO => undef,
( parseArgs \@_, @{$cmdLines{twoScalars}}),
);
print "twoScalars missing required argument:\n"
. join( "\n", checkArgs \%h ) . "\n"
if ( checkArgs \%h );
return " $h{ONE} , $h{TWO} \n";
}
sub oneHash
{
my %h = (
ONE => undef,
( parseArgs \@_, @{$cmdLines{oneHash}}),
);
print "oneHash missing required argument:\n"
. join( "\n", checkArgs \%h ) . "\n"
if ( checkArgs \%h );
print "oneHash\n";
print join("\n", (%{$h{ONE}}));
}
sub oneList
{
my %h = (
ONE => undef,
( parseArgs \@_, @{$cmdLines{oneList}}),
);
print "oneList missing required argument:\n"
. join( "\n", checkArgs \%h ) . "\n"
if ( checkArgs \%h );
print "oneList\n";
print join("\n",@{$h{ONE}});
}
# The "Main" subroutine. Not included in package, must be added manually to a script
# The following 10 lines of code hook in the included "regAC" function that will
# Generate a bash auto completion script (it will try to install it in /etc/bash_completion.d,
# otherwise it will print to stdout).
if ( defined $ARGV[0] )
{
if ( defined( &{ $ARGV[0] } ) )
{
no strict 'refs';
my $subRef = shift @ARGV;
print join( "\n", &$subRef(@ARGV) ) . "\n" unless $subRef =~ /regAC/ ;
&$subRef($scriptName, \@exportedSubs, \%cmdLines, \%additionalWordCompletions) if $subRef =~ /regAC/ ;
exit 0;
}
}
# some unit test examples:
twoScalars "Hello1", "Hello2";
twoScalars {ONE => "Hello1", TWO => "Hello2"};
twoScalars "--ONE Hello1 --TWO Hello2";
twoScalars "--ONE", "Hello1", "--TWO", "Hello2";
twoScalars "--ONE", "Hello1", "--TWO", "Hello2", "--THREE", "Hello3"; # complains about "unknown option: three"
INSTALLATION
To install this module, run the following commands:
perl Makefile.PL
make
make test
make install
SUPPORT AND DOCUMENTATION
After installing, you can find documentation for this module with the
perldoc command.
perldoc Getopt::CommandLineExports
You can also look for information at:
RT, CPAN's request tracker (report bugs here)
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Getopt-CommandLineExports
AnnoCPAN, Annotated CPAN documentation
http://annocpan.org/dist/Getopt-CommandLineExports
CPAN Ratings
http://cpanratings.perl.org/d/Getopt-CommandLineExports
Search CPAN
http://search.cpan.org/dist/Getopt-CommandLineExports/
Code Repository
https://code.google.com/p/getopt-cle/
LICENSE AND COPYRIGHT
Copyright (C) 2008-2012 Robert Haxton
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.