X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FGetopt%2FBasic.pm;h=9a6c79ac25bec5dfe9127bc42facca344d60c983;hb=81b19ed83c9e345f960ccefbcd639dd0e3c2de06;hp=7d5d6965264935a5d5545c006368f8aac96b1add;hpb=669588e263ff229c94d602596f23cc91deefed75;p=gitmo%2FMooseX-Getopt.git diff --git a/lib/MooseX/Getopt/Basic.pm b/lib/MooseX/Getopt/Basic.pm index 7d5d696..9a6c79a 100644 --- a/lib/MooseX/Getopt/Basic.pm +++ b/lib/MooseX/Getopt/Basic.pm @@ -20,8 +20,10 @@ sub new_with_options { if($class->meta->does_role('MooseX::ConfigFromFile')) { local @ARGV = @ARGV; + # just get the configfile arg now; the rest of the args will be + # fetched later my $configfile; - my $opt_parser = Getopt::Long::Parser->new( config => [ qw( pass_through ) ] ); + my $opt_parser = Getopt::Long::Parser->new( config => [ qw( no_auto_help pass_through ) ] ); $opt_parser->getoptions( "configfile=s" => \$configfile ); if(!defined $configfile) { @@ -61,7 +63,7 @@ sub new_with_options { my $params = $config_from_file ? { %$config_from_file, %{$processed{params}} } : $processed{params}; # did the user request usage information? - if ( $processed{usage} && ($params->{'?'} or $params->{help} or $params->{usage}) ) + if ( $processed{usage} and $params->{help_flag} ) { $class->_getopt_full_usage($processed{usage}); } @@ -69,6 +71,7 @@ sub new_with_options { $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 ); @@ -206,9 +209,9 @@ sub _attrs_to_options { opt_string => $opt_string, required => $attr->is_required && !$attr->has_default && !$attr->has_builder && !exists $config_from_file->{$attr->name}, # NOTE: - # this "feature" was breaking because - # Getopt::Long::Descriptive would return - # the default value as if it was a command + # this "feature" was breaking because + # Getopt::Long::Descriptive would return + # the default value as if it was a command # line flag, which would then override the # one passed into a constructor. # See 100_gld_default_bug.t for an example