X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FScriptRole.pm;h=af47fd236141afa0df81d98808d70e0448f75929;hb=6db8aa1d6fcd8b008971db965bf8e3190216b77b;hp=bef547af8257b1fbf082c4feb18c1a639de0170f;hpb=2b8d5598d6da39d06250d3dac182d5b0e4684384;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/ScriptRole.pm b/lib/Catalyst/ScriptRole.pm index bef547a..af47fd2 100644 --- a/lib/Catalyst/ScriptRole.pm +++ b/lib/Catalyst/ScriptRole.pm @@ -1,5 +1,6 @@ package Catalyst::ScriptRole; use Moose::Role; +use Plack::Runner; use MooseX::Types::Moose qw/Str Bool/; use Pod::Usage; use MooseX::Getopt; @@ -14,17 +15,18 @@ with 'MooseX::Getopt' => { }; has application_name => ( - traits => ['NoGetopt'], - isa => Str, - is => 'ro', + traits => ['NoGetopt'], + isa => Str, + is => 'ro', required => 1, ); has help => ( - traits => ['Getopt'], - isa => Bool, - is => 'ro', - documentation => q{Display this help and exit}, + traits => ['Getopt'], + isa => Bool, + is => 'ro', + documentation => 'Display this help and exit', + cmd_aliases => ['?', 'h'], ); sub _getopt_spec_exception {} @@ -54,11 +56,23 @@ sub _application_args { () } +sub _plack_loader_args { + my @app_args = shift->_application_args; + return (port => $app_args[0]); +} + sub _run_application { my $self = shift; my $app = $self->application_name; Class::MOP::load_class($app); - $app->run($self->_application_args); + my $server; + if (my $e = $self->can('_plack_engine_name') ) { + $server = Plack::Loader->load($self->$e, $self->_plack_loader_args); + } + else { + $server = Plack::Loader->auto($self->_plack_loader_args); + } + $app->run($server, $self->_application_args); } 1; @@ -73,9 +87,9 @@ Catalyst::ScriptRole - Common functionality for Catalyst scripts. use Moose; use namespace::autoclean; - with 'Catalyst::Script::Role'; + with 'Catalyst::ScriptRole'; - sub _application_args { ... } + sub _application_args { ... } =head1 DESCRIPTION @@ -109,4 +123,3 @@ This library is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut -