Make option warning eacy to override for Catalyst. Needs tests
Tomas Doran [Thu, 26 Nov 2009 00:11:21 +0000 (00:11 +0000)]
ChangeLog
lib/MooseX/Getopt.pm

index 6bfd1ec..d039416 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 Revision history for Perl extension MooseX-Getopt
 
+0.25 UNRELEAED
+  * MooseX::Getopt
+   - Split out the warnings and the exception from Getopt so that they can be
+     overridden.
+
 0.24 Fri. Oct  23 2009
   * MooseX::Getopt
     - Fix bug with mixed case attribute names (MAROS)
index 1dedd87..b942d84 100644 (file)
@@ -88,10 +88,9 @@ sub _parse_argv {
     # Get a clean copy of the original @ARGV
     my $argv_copy = [ @ARGV ];
 
-    my @err;
-
+    my @warnings;
     my ( $parsed_options, $usage ) = eval {
-        local $SIG{__WARN__} = sub { push @err, @_ };
+        local $SIG{__WARN__} = sub { push @warnings, @_ };
 
         if ( HAVE_GLD ) {
             return Getopt::Long::Descriptive::describe_options($class->_usage_format(%params), @$opt_spec);
@@ -102,7 +101,8 @@ sub _parse_argv {
         }
     };
 
-    die join "", grep { defined } @err, $@ if @err or $@;
+    $class->_getopt_spec_warnings(@warnings) if @warnings;
+    $class->_getopt_spec_exception(\@warnings, $@) if $@;
 
     # Get a copy of the Getopt::Long-mangled @ARGV
     my $argv_mangled = [ @ARGV ];
@@ -121,6 +121,13 @@ sub _parse_argv {
     );
 }
 
+sub _getopt_spec_warnings { }
+
+sub _getopt_spec_exception {
+    my ($self, $warnings, $exception) = @_;
+    die @$warnings, $exception;
+}
+
 sub _usage_format {
     return "usage: %c %o";
 }