Applied patch to fix RT46200
[gitmo/MooseX-Getopt.git] / lib / MooseX / Getopt.pm
index 85747e5..2356ef8 100644 (file)
@@ -11,7 +11,7 @@ use Carp ();
 use Getopt::Long (); # GLD uses it anyway, doesn't hurt
 use constant HAVE_GLD => not not eval { require Getopt::Long::Descriptive };
 
-our $VERSION   = '0.14';
+our $VERSION   = '0.18';
 our $AUTHORITY = 'cpan:STEVAN';
 
 has ARGV       => (is => 'rw', isa => 'ArrayRef', metaclass => "NoGetopt");
@@ -55,7 +55,7 @@ sub new_with_options {
     $class->new(
         ARGV       => $processed{argv_copy},
         extra_argv => $processed{argv},
-        @params, # explicit params to ->new
+        %$constructor_params, # explicit params to ->new
         %$params, # params from CLI
     );
 }
@@ -164,7 +164,7 @@ sub _compute_getopt_attrs {
         $_->name !~ /^_/
     } grep {
         !$_->does('MooseX::Getopt::Meta::Attribute::Trait::NoGetopt')
-    } $class->meta->compute_all_applicable_attributes
+    } $class->meta->get_all_attributes
 }
 
 sub _get_cmd_flags_for_attr {
@@ -193,10 +193,13 @@ sub _attrs_to_options {
 
         my $opt_string = join(q{|}, $flag, @aliases);
 
-        if ($attr->has_type_constraint) {
-            my $type_name = $attr->type_constraint->name;
-            if (MooseX::Getopt::OptionTypeMap->has_option_type($type_name)) {
-                $opt_string .= MooseX::Getopt::OptionTypeMap->get_option_type($type_name)
+        if ($attr->name eq 'configfile') {
+            $opt_string .= '=s';
+        }
+        elsif ($attr->has_type_constraint) {
+            my $type = $attr->type_constraint;
+            if (MooseX::Getopt::OptionTypeMap->has_option_type($type)) {
+                $opt_string .= MooseX::Getopt::OptionTypeMap->get_option_type($type)
             }
         }