Don't screw over people using --detach, <sigh>
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Script / FastCGI.pm
1 package Catalyst::Script::FastCGI;
2
3 BEGIN { $ENV{CATALYST_ENGINE} ||= 'FastCGI' }
4 use Moose;
5 use MooseX::Types::Moose qw/Str Bool Int/;
6 use namespace::autoclean;
7
8 with 'Catalyst::ScriptRole';
9
10 has listen => (
11     traits        => [qw(Getopt)],
12     cmd_aliases   => 'l',
13     isa           => Str,
14     is            => 'ro',
15     documentation => 'Specify a listening port/socket',
16 );
17
18 has pidfile => (
19     traits        => [qw(Getopt)],
20     cmd_aliases   => [qw/pid p/],
21     isa           => Str,
22     is            => 'ro',
23     documentation => 'Specify a pidfile',
24 );
25
26 has daemon => (
27     traits        => [qw(Getopt)],
28     isa           => Bool,
29     is            => 'ro',
30     cmd_aliases   => [qw/d detach/], # Eww, detach is here as we fucked it up.. Deliberately not documented
31     documentation => 'Daemonize (go into the background)',
32 );
33
34 has manager => (
35     traits        => [qw(Getopt)],
36     isa           => Str,
37     is            => 'ro',
38     cmd_aliases   => 'M',
39     documentation => 'Use a different FastCGI process manager class',
40 );
41
42 has keeperr => (
43     traits        => [qw(Getopt)],
44     cmd_aliases   => 'e',
45     isa           => Bool,
46     is            => 'ro',
47     documentation => 'Log STDERR',
48 );
49
50 has nproc => (
51     traits        => [qw(Getopt)],
52     cmd_aliases   => 'n',
53     isa           => Int,
54     is            => 'ro',
55     documentation => 'Specify a number of child processes',
56 );
57
58 sub _application_args {
59     my ($self) = shift;
60     return (
61         $self->listen,
62         {
63             nproc   => $self->nproc,
64             pidfile => $self->pidfile,
65             manager => $self->manager,
66             detach  => $self->daemon,
67             keep_stderr => $self->keeperr,
68         }
69     );
70 }
71
72 __PACKAGE__->meta->make_immutable;
73
74 =head1 NAME
75
76 Catalyst::Script::FastCGI - The FastCGI Catalyst Script
77
78 =head1 SYNOPSIS
79
80   myapp_fastcgi.pl [options]
81
82  Options:
83    -? --help      display this help and exits
84    -l --listen    Socket path to listen on
85                   (defaults to standard input)
86                   can be HOST:PORT, :PORT or a
87                   filesystem path
88    -n --nproc     specify number of processes to keep
89                   to serve requests (defaults to 1,
90                   requires -listen)
91    -p --pidfile   specify filename for pid file
92                   (requires -listen)
93    -d --daemon    daemonize (requires -listen)
94    -M --manager   specify alternate process manager
95                   (FCGI::ProcManager sub-class)
96                   or empty string to disable
97    -e --keeperr   send error messages to STDOUT, not
98                   to the webserver
99
100 =head1 DESCRIPTION
101
102 Run a Catalyst application as fastcgi.
103
104 =head1 AUTHORS
105
106 Catalyst Contributors, see Catalyst.pm
107
108 =head1 COPYRIGHT
109
110 This library is free software. You can redistribute it and/or modify it under
111 the same terms as Perl itself.
112
113 =cut