X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FScriptRunner.pm;h=b9a60f860f96c92d8595893564249a7b71184f67;hb=53779e13d3ae3e52c7c739aa17b97092cde4a4d7;hp=1e8c572a5b5d771673aaa2bab100506e14324c33;hpb=ff7f204903d36bf06f798497497118001623d0e2;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/ScriptRunner.pm b/lib/Catalyst/ScriptRunner.pm index 1e8c572..b9a60f8 100644 --- a/lib/Catalyst/ScriptRunner.pm +++ b/lib/Catalyst/ScriptRunner.pm @@ -4,8 +4,9 @@ use FindBin; use lib; use File::Spec; use Class::Load qw/ load_first_existing_class load_optional_class /; -use namespace::autoclean -also => 'subclass_with_traits'; +use Catalyst::Utils; use Try::Tiny; +use namespace::clean -except => [ 'meta' ]; sub find_script_class { my ($self, $app, $script) = @_; @@ -18,6 +19,7 @@ sub find_script_traits { return grep { load_optional_class($_) } @try; } +no namespace::clean; sub subclass_with_traits { my ($base, @traits) = @_; @@ -30,11 +32,14 @@ sub subclass_with_traits { return $meta->name; } +use namespace::clean; sub run { my ($self, $appclass, $scriptclass) = @_; - lib->import(File::Spec->catdir($FindBin::Bin, '..', 'lib')); + if (grep { -f File::Spec->catfile($FindBin::Bin, '..', $_) } Catalyst::Utils::dist_indicator_file_list()) { + lib->import(File::Spec->catdir($FindBin::Bin, '..', 'lib')); + } my $class = $self->find_script_class($appclass, $scriptclass); @@ -48,6 +53,7 @@ sub run { } __PACKAGE__->meta->make_immutable; +1; =head1 NAME @@ -86,6 +92,16 @@ individually. Called with two parameters, the application class (e.g. MyApp) and the script class, (i.e. one of Server/FastCGI/CGI/Create/Test) +=head2 find_script_class ($appname, $script_name) + +Finds and loads the class for the script, trying the application specific +script first, and falling back to the generic script. Returns the script +which was loaded. + +=head2 find_script_traits ($appname, @try) + +Finds and loads a set of traits. Returns the list of traits which were loaded. + =head1 AUTHORS Catalyst Contributors, see Catalyst.pm