X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FGetopt.pm;h=d7898f779b86ae55198e0f81d7cd39657f866a5c;hb=b4a7905195bf50b95248815d2cfe5a762d8986b5;hp=cb0d141a4ff844c2d0604c25461531bc791d62ff;hpb=3cc60720e3d5ebb69597dca707763a661ccca1ea;p=gitmo%2FMooseX-Getopt.git diff --git a/lib/MooseX/Getopt.pm b/lib/MooseX/Getopt.pm index cb0d141..d7898f7 100644 --- a/lib/MooseX/Getopt.pm +++ b/lib/MooseX/Getopt.pm @@ -9,11 +9,11 @@ use MooseX::Getopt::Meta::Attribute::NoGetopt; use Getopt::Long (); # GLD uses it anyway, doesn't hurt use constant HAVE_GLD => not not eval { require Getopt::Long::Descriptive }; -our $VERSION = '0.08'; +our $VERSION = '0.10'; our $AUTHORITY = 'cpan:STEVAN'; -has ARGV => (is => 'rw', isa => 'ArrayRef', documentation => "hidden"); -has extra_argv => (is => 'rw', isa => 'ArrayRef', documentation => "hidden"); +has ARGV => (is => 'rw', isa => 'ArrayRef', metaclass => "NoGetopt"); +has extra_argv => (is => 'rw', isa => 'ArrayRef', metaclass => "NoGetopt"); sub new_with_options { my ($class, @params) = @_; @@ -26,12 +26,23 @@ sub new_with_options { my $params = $processed{params}; - if($class->meta->does_role('MooseX::ConfigFromFile') - && defined $params->{configfile}) { - %$params = ( - %{$class->get_config_from_file($params->{configfile})}, - %$params, - ); + if($class->meta->does_role('MooseX::ConfigFromFile')) { + my $configfile; + + if(defined $params->{configfile}) { + $configfile = $params->{configfile} + } + else { + my $cfmeta = $class->meta->get_attribute('configfile'); + $configfile = $cfmeta->default if $cfmeta->has_default; + } + + if(defined $configfile) { + %$params = ( + %{$class->get_config_from_file($configfile)}, + %$params, + ); + } } $class->new( @@ -241,7 +252,12 @@ code can still call the C method. If your class also uses a configfile-loading role based on L, such as L, L's C will load the configfile -specified by the C<--configfile> option for you. +specified by the C<--configfile> option (or the default you've +given for the configfile attribute) for you. + +Options specified in multiple places follow the following +precendence order: commandline overrides configfile, which +overrides explicit new_with_options parameters. =head2 Supported Type Constraints