X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FScript%2FFastCGI.pm;h=f7331714be7e9f692df320cc2ce12dc706a80395;hb=73e4f0f19c278740fa95796e30efb90a7b779713;hp=289ad632ceef958a9990529a80a6b79896065d11;hpb=335130bc612d511575043d6a78213c6504f7556e;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Script/FastCGI.pm b/lib/Catalyst/Script/FastCGI.pm index 289ad63..f733171 100644 --- a/lib/Catalyst/Script/FastCGI.pm +++ b/lib/Catalyst/Script/FastCGI.pm @@ -5,37 +5,103 @@ use FindBin qw/$Bin/; use lib "$Bin/../lib"; use Pod::Usage; use Moose; -use namespace::clean -except => [ qw(meta) ]; +use MooseX::Types::Moose qw/Str Bool Int/; +use namespace::autoclean; with 'MooseX::Getopt'; -has help => ( isa => 'Bool', is => 'ro', required => 0, default => sub { 0 } ); -has listen => ( isa => 'Int', is => 'ro', required => 1 ); -has pidfile => ( isa => 'Str', is => 'ro', required => 0 ); -has daemon => ( isa => 'Bool', is => 'ro', required => 0, default => sub { 0 } ); -has manager => ( isa => 'Str', is => 'ro', required => 0 ); -has keep_stderr => ( isa => 'Bool', is => 'ro', required => 0 ); -has nproc => ( isa => 'Int', is => 'ro', required => 0 ); -has detach => ( isa => 'Bool', is => 'ro', required => 0, default => sub { 0 } ); -has app => ( isa => 'Str', is => 'ro', required => 1 ); +has help => ( + traits => [qw(Getopt)], + cmd_aliases => 'h', + isa => Bool, + is => 'ro', + documentation => qq{ display this help and exits }, +); + +has listen => ( + traits => [qw(Getopt)], + cmd_aliases => 'l', + isa => Int, + is => 'ro', + default => "3000", + documentation => qq{ specify a different listening port } +); + +has pidfile => ( + traits => [qw(Getopt)], + cmd_aliases => 'pid', + isa => Str, + is => 'ro', + documentation => qq{ specify a pidfile } +); + +has daemon => ( + isa => Bool, + is => 'ro', + traits => [qw(Getopt)], + cmd_aliases => 'd', + documentation => qq{ daemonize } +); + +has manager => ( + isa => Str, + is => 'ro', + traits => [qw(Getopt)], + cmd_aliases => 'm', + documentation => qq{ use a different FastCGI manager } +); + +has keep_stderr => ( + traits => [qw(Getopt)], + cmd_aliases => 'std', + isa => Bool, + is => 'ro', + documentation => qq{ log STDERR } +); + +has nproc => ( + traits => [qw(Getopt)], + cmd_aliases => 'np', + isa => Int, + is => 'ro', + documentation => qq{ specify an nproc } +); + +has detach => ( + traits => [qw(Getopt)], + cmd_aliases => 'det', + isa => Bool, + is => 'ro', + documentation => qq{ detach this FastCGI process } +); + +has _app => ( + reader => 'app', + init_arg => 'app', + traits => [qw(NoGetopt)], + isa => Str, + is => 'ro', +); sub run { my $self = shift; - + pod2usage() if $self->help; my $app = $self->app; Class::MOP::load_class($app); $app->run( $self->listen, - { + { nproc => $self->nproc, pidfile => $self->pidfile, manager => $self->manager, detach => $self->detach, keep_stderr => $self->keep_stderr, - } + } ); } +__PACKAGE__->meta->make_immutable; + 1;