From: Brandon L Black Date: Wed, 23 Jan 2008 06:17:56 +0000 (+0000) Subject: 0.10 - support default configfile w/ MX::ConfigFromFile X-Git-Tag: 0_11^0 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-Getopt.git;a=commitdiff_plain;h=b4a7905195bf50b95248815d2cfe5a762d8986b5 0.10 - support default configfile w/ MX::ConfigFromFile --- diff --git a/ChangeLog b/ChangeLog index eec9237..398ed92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ Revision history for Perl extension MooseX-Getopt +0.10 Wed. Jan. 23, 2008 + * MooseX::Getopt + - Support default configfile attribute when + used with MooseX::ConfigFromFile-based roles + 0.09 Tues. Jan. 22, 2008 * MooseX::Getopt - Use Getopt::Long::Descriptive if it's available diff --git a/lib/MooseX/Getopt.pm b/lib/MooseX/Getopt.pm index ea7642c..d7898f7 100644 --- a/lib/MooseX/Getopt.pm +++ b/lib/MooseX/Getopt.pm @@ -9,7 +9,7 @@ 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.09'; +our $VERSION = '0.10'; our $AUTHORITY = 'cpan:STEVAN'; has ARGV => (is => 'rw', isa => 'ArrayRef', metaclass => "NoGetopt"); @@ -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