Added a --title parameter to fastcgi script, sets process title for FCGI::ProcManager
[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 has title => (
59     traits        => [qw(Getopt)],
60     cmd_aliases   => 't',
61     isa           => Str,
62     is            => 'ro',
63     documentation => 'Set the process title',
64 );
65
66 sub _application_args {
67     my ($self) = shift;
68     return (
69         $self->listen,
70         {
71             nproc   => $self->nproc,
72             pidfile => $self->pidfile,
73             manager => $self->manager,
74             detach  => $self->daemon,
75             keep_stderr => $self->keeperr,
76             title => $self->title,
77         }
78     );
79 }
80
81 __PACKAGE__->meta->make_immutable;
82
83 =head1 NAME
84
85 Catalyst::Script::FastCGI - The FastCGI Catalyst Script
86
87 =head1 SYNOPSIS
88
89   myapp_fastcgi.pl [options]
90
91  Options:
92    -? --help      display this help and exits
93    -l --listen    Socket path to listen on
94                   (defaults to standard input)
95                   can be HOST:PORT, :PORT or a
96                   filesystem path
97    -n --nproc     specify number of processes to keep
98                   to serve requests (defaults to 1,
99                   requires -listen)
100    -p --pidfile   specify filename for pid file
101                   (requires -listen)
102    -d --daemon    daemonize (requires -listen)
103    -M --manager   specify alternate process manager
104                   (FCGI::ProcManager sub-class)
105                   or empty string to disable
106    -e --keeperr   send error messages to STDOUT, not
107                   to the webserver
108    -t --title     set the process title
109
110 =head1 DESCRIPTION
111
112 Run a Catalyst application as fastcgi.
113
114 =head1 AUTHORS
115
116 Catalyst Contributors, see Catalyst.pm
117
118 =head1 COPYRIGHT
119
120 This library is free software. You can redistribute it and/or modify it under
121 the same terms as Perl itself.
122
123 =cut