fixed spelling errors
[catagits/Catalyst-Runtime.git] / lib / Catalyst / ScriptRunner.pm
index f7e617c..ee2b1c1 100644 (file)
@@ -1,36 +1,49 @@
 package Catalyst::ScriptRunner;
 use Moose;
+use FindBin;
+use lib;
+use File::Spec;
 use namespace::autoclean;
 
 sub run {
-    my ($self, $class, $scriptclass) = @_;
+    my ($self, $class, $scriptclass, %args) = @_;
     my $classtoload = "${class}::Script::$scriptclass";
 
-    # FIXME - Error handling / reporting
-    if ( eval { Class::MOP::load_class($classtoload) } ) {
-    }
-    else {
+    lib->import(File::Spec->catdir($FindBin::Bin, '..', 'lib'));
+
+    unless ( eval { Class::MOP::load_class($classtoload) } ) {
+        warn("Could not load $classtoload - falling back to Catalyst::Script::$scriptclass : $@\n")
+            if $@ !~ /Can't locate/;
         $classtoload = "Catalyst::Script::$scriptclass";
         Class::MOP::load_class($classtoload);
     }
-    $classtoload->new_with_options( application_name => $class )->run;
+    $classtoload->new_with_options( application_name => $class, %args )->run;
 }
 
 __PACKAGE__->meta->make_immutable;
 
 =head1 NAME
 
-Catalyst::ScriptRunner - The Catalyst Framework Script runner
+Catalyst::ScriptRunner - The Catalyst Framework script runner
 
 =head1 SYNOPSIS
 
-See L<Catalyst>.
+    # Will run MyApp::Script::Server if it exists, otherwise
+    # will run Catalyst::Script::Server.
+    Catalyst::ScriptRunner->run('MyApp', 'Server');
 
 =head1 DESCRIPTION
 
 This class is responsible for running scripts, either in the application specific namespace
 (e.g. C<MyApp::Script::Server>), or the Catalyst namespace (e.g. C<Catalyst::Script::Server>)
 
+=head1 METHODS
+
+=head2 run ($application_class, $scriptclass)
+
+Called with two parameters, the application class (e.g. MyApp)
+and the script class, (i.e. one of Server/FastCGI/CGI/Create/Test)
+
 =head1 AUTHORS
 
 Catalyst Contributors, see Catalyst.pm