fork now has a short option
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Script / Server.pm
1 package Catalyst::Script::Server;
2
3 BEGIN {
4     $ENV{CATALYST_ENGINE} ||= 'HTTP';
5     $ENV{CATALYST_SCRIPT_GEN} = 31;
6     require Catalyst::Engine::HTTP;
7 }
8
9 use FindBin qw/$Bin/;
10 use lib "$Bin/../lib";
11 use Pod::Usage;
12 use Moose;
13 use Catalyst::Engine::HTTP;
14 use namespace::clean -except => [ qw(meta) ];
15
16 with 'MooseX::Getopt';
17
18 has help => ( 
19     traits => [qw(Getopt)],
20     cmd_aliases => 'h',
21     isa => 'Bool',   
22     is => 'ro', 
23     required => 0, 
24     default => 0,  
25 );
26
27 has host            => ( isa => 'Str',    is => 'ro', required => 0, default =>  "localhost" );
28
29 has fork => ( 
30     traits => [qw(Getopt)],
31     cmd_aliases => 'f',
32     isa => 'Bool',
33     is => 'ro', 
34     required => 0 
35 );
36
37 has listen          => ( isa => 'Int',    is => 'ro', required => 0, default => "3000" );
38 has pidfile         => ( isa => 'Str',    is => 'ro', required => 0 );
39 has keepalive       => ( isa => 'Bool',   is => 'ro', required => 0, default => 0 );
40 has background      => ( isa => 'Bool',   is => 'ro', required => 0 );
41 has app             => ( isa => 'Str',    is => 'ro', required => 1 );
42 has restart         => ( isa => 'Bool',   is => 'ro', required => 0 );
43 has restart_delay   => ( isa => 'Int',    is => 'ro', required => 0 );
44 has restart_regex   => ( isa => 'Str',    is => 'ro', required => 0 );
45 has follow_symlinks => ( isa => 'Bool',   is => 'ro', required => 0 );
46
47 my @argv = @ARGV;
48
49 sub run {
50     my $self = shift;
51     
52     pod2usage() if $self->help;
53     my $app = $self->app;
54     Class::MOP::load_class($app);
55     $app->run(
56         $self->listen, $self->host,
57         {  
58            'fork'     => $self->fork,
59            keepalive  => $self->keepalive,
60            background => $self->background,
61            pidfile    => $self->pidfile,
62            keepalive         => $self->keepalive,
63            restart           => $self->restart,
64            restart_delay     => $self->restart_delay,
65            restart_regex     => qr/$self->restart_regex/,
66 # FIXME    restart_directory => $self->restart_directory,
67            follow_symlinks   => $self->follow_symlinks,
68         }  
69     );
70
71 }
72
73
74 1;
75
76 =head1 NAME
77
78 [% appprefix %]_server.pl - Catalyst Testserver
79
80 =head1 SYNOPSIS
81
82 [% appprefix %]_server.pl [options]
83
84  Options:
85    -d -debug          force debug mode
86    -f -fork           handle each request in a new process
87                       (defaults to false)
88    -? -help           display this help and exits
89       -host           host (defaults to all)
90    -p -port           port (defaults to 3000)
91    -k -keepalive      enable keep-alive connections
92    -r -restart        restart when files get modified
93                       (defaults to false)
94    -rd -restartdelay  delay between file checks
95                       (ignored if you have Linux::Inotify2 installed)
96    -rr -restartregex  regex match files that trigger
97                       a restart when modified
98                       (defaults to '\.yml$|\.yaml$|\.conf|\.pm$')
99    -restartdirectory  the directory to search for
100                       modified files, can be set mulitple times
101                       (defaults to '[SCRIPT_DIR]/..')
102    -follow_symlinks   follow symlinks in search directories
103                       (defaults to false. this is a no-op on Win32)
104    -background        run the process in the background
105    -pidfile           specify filename for pid file
106
107  See also:
108    perldoc Catalyst::Manual
109    perldoc Catalyst::Manual::Intro
110
111 =head1 DESCRIPTION
112
113 Run a Catalyst Testserver for this application.
114
115 =head1 AUTHORS
116
117 Catalyst Contributors, see Catalyst.pm
118
119 =head1 COPYRIGHT
120
121 This library is free software. You can redistribute it and/or modify
122 it under the same terms as Perl itself.
123
124 =cut