X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst%2FScriptRunner.pm;h=ee2b1c13f74595b267784ae2de3fa44aea364c0c;hp=ec5555e9e35f3b648764f2938f8e76797559f912;hb=f4dda4a8e24ec328419c0bef366f1cd294d42474;hpb=d24d92d9ed09f3cbd48356058429849e7c66ed73 diff --git a/lib/Catalyst/ScriptRunner.pm b/lib/Catalyst/ScriptRunner.pm index ec5555e..ee2b1c1 100644 --- a/lib/Catalyst/ScriptRunner.pm +++ b/lib/Catalyst/ScriptRunner.pm @@ -1,15 +1,56 @@ package Catalyst::ScriptRunner; use Moose; +use FindBin; +use lib; +use File::Spec; +use namespace::autoclean; sub run { - my ($self, $class, $scriptclass) = @_; - my $classtoload = "${class}::Script::$scriptclass"; - - if ( Class::MOP::load_class($classtoload) ) { - $classtoload->new_with_options->run; - } else { + my ($self, $class, $scriptclass, %args) = @_; + my $classtoload = "${class}::Script::$scriptclass"; + + 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"; - $classtoload->new_with_options->run; + Class::MOP::load_class($classtoload); } + $classtoload->new_with_options( application_name => $class, %args )->run; } -1; + +__PACKAGE__->meta->make_immutable; + +=head1 NAME + +Catalyst::ScriptRunner - The Catalyst Framework script runner + +=head1 SYNOPSIS + + # 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), or the Catalyst namespace (e.g. C) + +=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 + +=head1 COPYRIGHT + +This library is free software. You can redistribute it and/or modify it under +the same terms as Perl itself. + +=cut