X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-Getopt.git;a=blobdiff_plain;f=lib%2FMooseX%2FGetopt%2FBasic.pm;fp=lib%2FMooseX%2FGetopt%2FBasic.pm;h=906ba390f4a78951958e2cbb4563275239a5f7c0;hp=44d683c05dcd4b3f6093e7dd355157e513e59731;hb=f361569330f174ac07999ef69bf4f58df85be084;hpb=aabf4179f74c8607d8c9de5a1da07a5f2cb48b3b diff --git a/lib/MooseX/Getopt/Basic.pm b/lib/MooseX/Getopt/Basic.pm index 44d683c..906ba39 100644 --- a/lib/MooseX/Getopt/Basic.pm +++ b/lib/MooseX/Getopt/Basic.pm @@ -6,6 +6,7 @@ use Moose::Role; use MooseX::Getopt::OptionTypeMap; use MooseX::Getopt::Meta::Attribute; use MooseX::Getopt::Meta::Attribute::NoGetopt; +use MooseX::Getopt::ProcessedArgv; use Carp (); use Getopt::Long 2.37 (); @@ -13,7 +14,7 @@ use Getopt::Long 2.37 (); has ARGV => (is => 'rw', isa => 'ArrayRef', metaclass => "NoGetopt"); has extra_argv => (is => 'rw', isa => 'ArrayRef', metaclass => "NoGetopt"); -sub new_with_options { +sub process_argv { my ($class, @params) = @_; my $config_from_file; @@ -68,13 +69,28 @@ sub new_with_options { $class->_getopt_full_usage($processed{usage}); } + return MooseX::Getopt::ProcessedArgv->new + ( + argv_copy => $processed{argv_copy}, + extra_argv => $processed{argv}, + usage => $processed{usage}, + constructor_params => $constructor_params, # explicit params to ->new + cli_params => $params, # params from CLI + ); +} + +sub new_with_options { + my ($class, @params) = @_; + + my $pa = $class->process_argv(@params); + $class->new( - ARGV => $processed{argv_copy}, - extra_argv => $processed{argv}, - ( $processed{usage} ? ( usage => $processed{usage} ) : () ), - %$constructor_params, # explicit params to ->new - %$params, # params from CLI - ); + ARGV => $pa->argv_copy, + extra_argv => $pa->extra_argv, + ( $pa->usage ? ( usage => $pa->usage ) : () ), + %{ $pa->constructor_params }, # explicit params to ->new + %{ $pa->cli_params }, # params from CLI + ); } sub _getopt_spec { shift->_traditional_spec(@_); }