X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FScript%2FFastCGI.pm;h=a67aa5709a591b79e2fb030ee034bc0af7ae82ed;hb=182f8b1e3c426d62337e186c2409c555794152d7;hp=f9322d22aab3352e96ff0a5a53829422974b039b;hpb=d3082facb5273f9970121638c0385ecfc0f7b090;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Script/FastCGI.pm b/lib/Catalyst/Script/FastCGI.pm index f9322d2..a67aa57 100644 --- a/lib/Catalyst/Script/FastCGI.pm +++ b/lib/Catalyst/Script/FastCGI.pm @@ -1,71 +1,102 @@ package Catalyst::Script::FastCGI; - -BEGIN { $ENV{CATALYST_ENGINE} ||= 'FastCGI' } use Moose; use MooseX::Types::Moose qw/Str Bool Int/; +use Data::OptList; use namespace::autoclean; +sub _plack_engine_name { 'FCGI' } + with 'Catalyst::ScriptRole'; has listen => ( - cmd_aliases => 'l', - isa => Int, - is => 'ro', + traits => [qw(Getopt)], + cmd_aliases => 'l', + isa => Str, + is => 'ro', documentation => 'Specify a listening port/socket', ); has pidfile => ( - cmd_aliases => 'pid', - isa => Str, - is => 'ro', + traits => [qw(Getopt)], + cmd_aliases => [qw/pid p/], + isa => Str, + is => 'ro', documentation => 'Specify a pidfile', ); -has daemon => ( - isa => Bool, - is => 'ro', - cmd_aliases => 'd', - documentation => 'Daemonize', +has daemon => ( + traits => [qw(Getopt)], + isa => Bool, + is => 'ro', + cmd_aliases => [qw/d detach/], # Eww, detach is here as we fucked it up.. Deliberately not documented + documentation => 'Daemonize (go into the background)', ); -has manager => ( - isa => Str, - is => 'ro', - cmd_aliases => 'm', - documentation => 'Use a different FastCGI manager', # FIXME +has manager => ( + traits => [qw(Getopt)], + isa => Str, + is => 'ro', + cmd_aliases => 'M', + documentation => 'Use a different FastCGI process manager class', ); -has keep_stderr => ( - cmd_aliases => 'std', - isa => Bool, - is => 'ro', +has keeperr => ( + traits => [qw(Getopt)], + cmd_aliases => 'e', + isa => Bool, + is => 'ro', documentation => 'Log STDERR', ); has nproc => ( - cmd_aliases => 'np', - isa => Int, - is => 'ro', - documentation => 'Specify an nproc', # FIXME + traits => [qw(Getopt)], + cmd_aliases => 'n', + isa => Int, + is => 'ro', + documentation => 'Specify a number of child processes', ); -has detach => ( - cmd_aliases => 'det', - isa => Bool, - is => 'ro', - documentation => 'Detach this FastCGI process', +has proc_title => ( + traits => [qw(Getopt)], + isa => Str, + is => 'ro', + lazy => 1, + builder => '_build_proc_title', + documentation => 'Set the process title', ); +sub _build_proc_title { + my ($self) = @_; + return sprintf 'perl-fcgi-pm [%s]', $self->application_name; +} + +sub BUILD { + my ($self) = @_; + $self->proc_title; +} + +sub _plack_loader_args { + my ($self) = shift; + return ( + map { $_->[0] => $self->${ \($_->[1] ? $_->[1]->[0] : $_->[0]) } } + Data::OptList::mkopt([ + qw/pidfile listen manager nproc keep_stderr proc_title/, + detach => [ 'daemon' ], + ]) + ); +} + sub _application_args { my ($self) = shift; return ( $self->listen, { - nproc => $self->nproc, - pidfile => $self->pidfile, - manager => $self->manager, - detach => $self->detach, - keep_stderr => $self->keep_stderr, + nproc => $self->nproc, + pidfile => $self->pidfile, + manager => $self->manager, + detach => $self->daemon, + keep_stderr => $self->keeperr, + proc_title => $self->proc_title, } ); } @@ -78,11 +109,30 @@ Catalyst::Script::FastCGI - The FastCGI Catalyst Script =head1 SYNOPSIS -See L. + myapp_fastcgi.pl [options] + + Options: + -? --help display this help and exits + -l --listen Socket path to listen on + (defaults to standard input) + can be HOST:PORT, :PORT or a + filesystem path + -n --nproc specify number of processes to keep + to serve requests (defaults to 1, + requires -listen) + -p --pidfile specify filename for pid file + (requires -listen) + -d --daemon daemonize (requires -listen) + -M --manager specify alternate process manager + (FCGI::ProcManager sub-class) + or empty string to disable + -e --keeperr send error messages to STDOUT, not + to the webserver + --proc_title set the process title =head1 DESCRIPTION -FIXME +Run a Catalyst application as fastcgi. =head1 AUTHORS