THIS time it's fixed. svn up ftw
[catagits/Catalyst-Devel.git] / share / script / myapp_server.pl.tt
CommitLineData
99618c49 1package [% appprefix %]::Script::Server;
239b5fc0 2
99618c49 3use Catalyst::Engine::HTTP;
4use [% appprefix %];
5use Moose;
239b5fc0 6
99618c49 7with 'MooseX::GetOpt';
239b5fc0 8
99618c49 9has argv => ( isa => 'ArrayRef', is => 'ro', required => 1 );
10has [qw/ fork background keepalive /] => ( isa => 'Bool', is => 'ro', required => 1, default => 0 );
11has pidfile => ( isa => 'Str', required => 0, is => 'ro' );
239b5fc0 12
99618c49 13sub run {
14 my $self = shift;
15 [% appprefix %]->run(
16 $port, $host,
17 {
18 argv => $self->argv,
19 'fork' => $self->fork,
20 keepalive => $self->keepalive,
21 background => $self->background,
22 pidfile => $self->pidfile,
23 }
24 );
25}
239b5fc0 26
99618c49 27__PACKAGE__->new_with_options->run;
239b5fc0 28
239b5fc0 29
30pod2usage(1) if $help;
31
32if ( $debug ) {
33 $ENV{CATALYST_DEBUG} = 1;
34}
35
36# If we load this here, then in the case of a restarter, it does not
37# need to be reloaded for each restart.
38require Catalyst;
39
40# If this isn't done, then the Catalyst::Devel tests for the restarter
41# fail.
42$| = 1 if $ENV{HARNESS_ACTIVE};
43
44my $runner = sub {
45 # This is require instead of use so that the above environment
46 # variables can be set at runtime.
47 require [% name %];
48
49 [% name %]->run(
50 $port, $host,
51 {
52 argv => \@argv,
53 'fork' => $fork,
54 keepalive => $keepalive,
55 background => $background,
56 pidfile => $pidfile,
57 }
58 );
59};
60
61if ( $restart ) {
62 die "Cannot run in the background and also watch for changed files.\n"
63 if $background;
64
65 require Catalyst::Restarter;
66
67 my $subclass = Catalyst::Restarter->pick_subclass;
68
69 my %args;
70 $args{follow_symlinks} = 1
71 if $follow_symlinks;
72 $args{directories} = $watch_directory
73 if defined $watch_directory;
74 $args{sleep_interval} = $check_interval
75 if defined $check_interval;
76 $args{filter} = qr/$file_regex/
77 if defined $file_regex;
78
79 my $restarter = $subclass->new(
80 %args,
81 start_sub => $runner,
82 );
83
84 $restarter->run_and_watch;
85}
86else {
87 $runner->();
88}
89
901;
91
92=head1 NAME
93
94[% appprefix %]_server.pl - Catalyst Testserver
95
96=head1 SYNOPSIS
97
98[% appprefix %]_server.pl [options]
99
100 Options:
101 -d -debug force debug mode
102 -f -fork handle each request in a new process
103 (defaults to false)
104 -? -help display this help and exits
105 -host host (defaults to all)
106 -p -port port (defaults to 3000)
107 -k -keepalive enable keep-alive connections
108 -r -restart restart when files get modified
109 (defaults to false)
110 -rd -restartdelay delay between file checks
111 (ignored if you have Linux::Inotify2 installed)
112 -rr -restartregex regex match files that trigger
113 a restart when modified
114 (defaults to '\.yml$|\.yaml$|\.conf|\.pm$')
115 -restartdirectory the directory to search for
116 modified files, can be set mulitple times
117 (defaults to '[SCRIPT_DIR]/..')
118 -follow_symlinks follow symlinks in search directories
119 (defaults to false. this is a no-op on Win32)
120 -background run the process in the background
121 -pidfile specify filename for pid file
122
123 See also:
124 perldoc Catalyst::Manual
125 perldoc Catalyst::Manual::Intro
126
127=head1 DESCRIPTION
128
129Run a Catalyst Testserver for this application.
130
131=head1 AUTHORS
132
133Catalyst Contributors, see Catalyst.pm
134
135=head1 COPYRIGHT
136
137This library is free software. You can redistribute it and/or modify
138it under the same terms as Perl itself.
139
140=cut