* MooseX::Getopt::Session: Drop die_on_warning attribute.
[gitmo/MooseX-Getopt.git] / lib / MooseX / Getopt / Parser / Descriptive.pm
index 63e9744..ad547ba 100644 (file)
@@ -33,8 +33,9 @@ sub build_options {
     Moose->throw_error('First argument is not a MooseX::Getopt::Session')
         unless $getopt->isa('MooseX::Getopt::Session');
 
-    my ($options, $usage);
-    my @opts;
+    my $options = {};
+    my $usage;
+    my (@opts, %cmd_flags_to_names);
 
     foreach my $attr (@attrs) {
         my $name = $attr->name;
@@ -42,6 +43,8 @@ sub build_options {
         my ($flag, @aliases) = $getopt->_get_cmd_flags_for_attr($attr);
         my $type = $getopt->_get_cmd_type_for_attr($attr);
 
+       $cmd_flags_to_names{$flag} = $name;
+
         my $opt_string = join '|', $flag, @aliases;
         $opt_string .= MooseX::Getopt::OptionTypeMap->get_option_type($type);
 
@@ -83,15 +86,21 @@ sub build_options {
         $getopt->extra_argv( $extra_argv );
     };
 
+    # Convert cmd_flags back to names in options hashref
+    $options = {
+        map {
+            $cmd_flags_to_names{$_} => $options->{$_}
+        } keys %$options,
+    };
+
     #%options = map { $_ => $options{$_} } grep { defined $options{$_} } keys %options;
-    $getopt->options( defined $options ? $options : {} );
+    $getopt->options( $options );
 
     ### MooseX::Getopt::Parser::Descriptive::build_options $options : $options
     ### MooseX::Getopt::Parser::Descriptive::build_options $usage : $usage
     ### MooseX::Getopt::Parser::Descriptive::build_options $getopt->status : $getopt->status
 
-    die join '', $getopt->warning
-        if $getopt->die_on_warning && ($getopt->has_warning || !$getopt->status);
+    die join '', $getopt->warning if ($getopt->has_warning || !$getopt->status);
 
     return $options;
 };