added debug 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::autoclean;
15
16 with 'MooseX::Getopt';
17
18 has debug => (
19     traits => [qw(Getopt)],
20     cmd_aliases => 'd',
21     isa => 'Bool', 
22     is => 'ro',
23
24 );
25
26 has help => ( 
27     traits => [qw(Getopt)],
28     cmd_aliases => 'h',
29     isa => 'Bool',   
30     is => 'ro', 
31     ,  
32 );
33
34 has host => ( 
35     isa => 'Str',    
36     is => 'ro', 
37     , 
38     default =>  "localhost" 
39 );
40
41 has fork => ( 
42     traits => [qw(Getopt)],
43     cmd_aliases => 'f',
44     isa => 'Bool',
45     is => 'ro', 
46      
47 );
48
49 has listen => ( 
50     traits => [qw(Getopt)],
51     cmd_aliases => 'l',
52     isa => 'Int',
53     is => 'ro', 
54     , 
55     default => "3000" 
56 );
57
58 has pidfile => ( 
59     traits => [qw(Getopt)],
60     cmd_aliases => 'pid',
61     isa => 'Str',    
62     is => 'ro', 
63      
64 );
65
66 has keepalive => ( 
67     traits => [qw(Getopt)],
68     cmd_aliases => 'k',
69     isa => 'Bool',   
70     is => 'ro', 
71     , 
72      
73 );
74
75 has background => ( 
76     traits => [qw(Getopt)],
77     cmd_aliases => 'bg',
78     isa => 'Bool',   
79     is => 'ro', 
80 );
81
82
83 has _app => ( 
84     reader   => 'app', 
85     init_arg => 'app',
86     traits => [qw(NoGetopt)],
87     isa => 'Str',    
88     is => 'ro', 
89 ); 
90
91 has restart => (
92     traits => [qw(Getopt)],
93     cmd_aliases => 'r', 
94     isa => 'Bool',   
95     is => 'ro', 
96      
97 );
98
99 has restart_delay => ( 
100     traits => [qw(Getopt)],
101     cmd_aliases => 'rdel',
102     isa => 'Int',    
103     is => 'ro', 
104      
105 );
106
107 has restart_regex => ( 
108     traits => [qw(Getopt)],
109     cmd_aliases => 'rxp',
110     isa => 'Str',    
111     is => 'ro', 
112      
113 );
114
115 has follow_symlinks => ( 
116     traits => [qw(Getopt)],
117     cmd_aliases => 'sym',
118     isa => 'Bool',   
119     is => 'ro', 
120      
121 );
122
123 sub usage {
124     my ($self) = shift;
125     
126     return pod2usage();
127
128 }
129
130 my @argv = @ARGV;
131
132 sub run {
133     my $self = shift;
134     
135     $self->usage if $self->help;
136     my $app = $self->app;
137     Class::MOP::load_class($app);
138     $app->run(
139         $self->listen, $self->host,
140         {  
141            'fork'            => $self->fork,
142            keepalive         => $self->keepalive,
143            background        => $self->background,
144            pidfile           => $self->pidfile,
145            keepalive         => $self->keepalive,
146            restart           => $self->restart,
147            restart_delay     => $self->restart_delay,
148            restart_regex     => qr/$self->restart_regex/,
149 # FIXME    restart_directory => $self->restart_directory,
150            follow_symlinks   => $self->follow_symlinks,
151         }  
152     );
153
154 }
155
156
157 1;
158
159 =head1 NAME
160
161 [% appprefix %]_server.pl - Catalyst Testserver
162
163 =head1 SYNOPSIS
164
165 [% appprefix %]_server.pl [options]
166
167  Options:
168    -d     --debug          force debug mode
169    -f     --fork           handle each request in a new process
170                       (defaults to false)
171    -h     --help           display this help and exits
172           --host           host (defaults to all)
173    -p     --port           port (defaults to 3000)
174    -k     --keepalive      enable keep-alive connections
175    -r     --restart        restart when files get modified
176                        (defaults to false)
177    --rd   --restartdelay  delay between file checks
178                       (ignored if you have Linux::Inotify2 installed)
179    --rr   --restartregex  regex match files that trigger
180                       a restart when modified
181                       (defaults to '\.yml$|\.yaml$|\.conf|\.pm$')
182    --rdir --restartdirectory  the directory to search for
183                       modified files, can be set mulitple times
184                       (defaults to '[SCRIPT_DIR]/..')
185    --sym  --follow_symlinks   follow symlinks in search directories
186                       (defaults to false. this is a no-op on Win32)
187    --bg   --background        run the process in the background
188    --pid  --pidfile           specify filename for pid file
189
190  See also:
191    perldoc Catalyst::Manual
192    perldoc Catalyst::Manual::Intro
193
194 =head1 DESCRIPTION
195
196 Run a Catalyst Testserver for this application.
197
198 =head1 AUTHORS
199
200 Catalyst Contributors, see Catalyst.pm
201
202 =head1 COPYRIGHT
203
204 This library is free software. You can redistribute it and/or modify
205 it under the same terms as Perl itself.
206
207 =cut