And more overrideable
[gitmo/MooseX-Getopt.git] / lib / MooseX / Getopt / Basic.pm
index 88fa48b..5000746 100644 (file)
@@ -44,13 +44,18 @@ sub new_with_options {
             $configfile = $cfmeta->default if $cfmeta->has_default;
         }
 
-        if(defined $configfile) {
-            $config_from_file = $class->get_config_from_file($configfile);
+        if (defined $configfile) {
+            $config_from_file = eval {
+                $class->get_config_from_file($configfile);
+            };
+            if ($@) {
+                die $@ unless $@ =~ /Specified configfile '\Q$configfile\E' does not exist/;
+            }
         }
     }
 
     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';
 
@@ -66,7 +71,7 @@ sub new_with_options {
     # did the user request usage information?
     if ( $processed{usage} && ($params->{'?'} or $params->{help} or $params->{usage}) )
     {
-        $processed{usage}->die();
+        $class->_exit_with_usage($processed{usage});
     }
 
     $class->new(
@@ -77,6 +82,11 @@ sub new_with_options {
     );
 }
 
+sub _exit_with_usage {
+    my ($self, $usage) = @_;
+    $usage->die();
+}
+
 sub _parse_argv {
     my ( $class, %params ) = @_;