has ARGV => (is => 'rw', isa => 'ArrayRef', metaclass => "NoGetopt");
has extra_argv => (is => 'rw', isa => 'ArrayRef', metaclass => "NoGetopt");
+sub _get_configfile_from_cli {
+ my $class = shift;
+ my $configfile;
+ my $opt_parser = Getopt::Long::Parser->new( config => [ qw( pass_through ) ] );
+ $opt_parser->getoptions( "configfile=s" => \$configfile );
+ return $configfile;
+}
+
sub new_with_options {
my ($class, @params) = @_;
- my $config_from_file;
+ my $constructor_params = ( @params == 1 ? $params[0] : {@params} );
+
+ my ($config_from_file, $configfile);
if($class->meta->does_role('MooseX::ConfigFromFile')) {
local @ARGV = @ARGV;
- my $configfile;
- my $opt_parser = Getopt::Long::Parser->new( config => [ qw( pass_through ) ] );
- $opt_parser->getoptions( "configfile=s" => \$configfile );
+ $configfile = $class->_get_configfile_from_cli;
+ if(!defined $configfile) {
+ $configfile = $constructor_params->{configfile};
+ }
if(!defined $configfile) {
my $cfmeta = $class->meta->find_attribute_by_name('configfile');
}
}
- my $constructor_params = ( @params == 1 ? $params[0] : {@params} );
-
Carp::croak("Single parameters to new_with_options() must be a HASH ref")
unless ref($constructor_params) eq 'HASH';
params => $constructor_params,
);
- my $params = $config_from_file ? { %$config_from_file, %{$processed{params}} } : $processed{params};
+ my $params = $config_from_file ? { configfile => $configfile, %$config_from_file, %{$processed{params}} } : $processed{params};
# did the user request usage information?
if ( $processed{usage} && ($params->{'?'} or $params->{help} or $params->{usage}) )