Created
June 2, 2009 05:37
-
-
Save anonymous/122081 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 1040ce8e2b299659eec9551284e7575362868f84 Mon Sep 17 00:00:00 2001 | |
From: Kieren Diment <kd@fenchurch.local> | |
Date: Tue, 2 Jun 2009 15:37:29 +1000 | |
Subject: [PATCH] update scripts | |
--- | |
script/myapp_cgi.pl | 4 +- | |
script/myapp_create.pl | 19 +++++++-- | |
script/myapp_fastcgi.pl | 16 ++++---- | |
script/myapp_server.pl | 107 +++++++++++++++++++++++++++++++++-------------- | |
script/myapp_test.pl | 4 +- | |
5 files changed, 103 insertions(+), 47 deletions(-) | |
diff --git a/script/myapp_cgi.pl b/script/myapp_cgi.pl | |
index 362fc78..27d7834 100755 | |
--- a/script/myapp_cgi.pl | |
+++ b/script/myapp_cgi.pl | |
@@ -1,4 +1,4 @@ | |
-#!/usr/bin/perl -w | |
+#!/usr/bin/env perl | |
BEGIN { $ENV{CATALYST_ENGINE} ||= 'CGI' } | |
@@ -31,7 +31,7 @@ Catalyst Contributors, see Catalyst.pm | |
=head1 COPYRIGHT | |
-This library is free software, you can redistribute it and/or modify | |
+This library is free software. You can redistribute it and/or modify | |
it under the same terms as Perl itself. | |
=cut | |
diff --git a/script/myapp_create.pl b/script/myapp_create.pl | |
index 747a6f0..e7c7b71 100755 | |
--- a/script/myapp_create.pl | |
+++ b/script/myapp_create.pl | |
@@ -1,10 +1,22 @@ | |
-#!/usr/bin/perl -w | |
+#!/usr/bin/env perl | |
use strict; | |
use warnings; | |
use Getopt::Long; | |
use Pod::Usage; | |
-use Catalyst::Helper; | |
+eval "use Catalyst::Helper;"; | |
+ | |
+if ($@) { | |
+ die <<END; | |
+To use the Catalyst development tools including catalyst.pl and the | |
+generated script/myapp_create.pl you need Catalyst::Helper, which is | |
+part of the Catalyst-Devel distribution. Please install this via a | |
+vendor package or by running one of - | |
+ | |
+ perl -MCPAN -e 'install Catalyst::Devel' | |
+ perl -MCPANPLUS -e 'install Catalyst::Devel' | |
+END | |
+} | |
my $force = 0; | |
my $mech = 0; | |
@@ -39,7 +51,6 @@ myapp_create.pl [options] model|view|controller name [helper] [options] | |
Examples: | |
myapp_create.pl controller My::Controller | |
- myapp_create.pl controller My::Controller BindLex | |
myapp_create.pl -mechanize controller My::Controller | |
myapp_create.pl view My::View | |
myapp_create.pl view MyView TT | |
@@ -68,7 +79,7 @@ Catalyst Contributors, see Catalyst.pm | |
=head1 COPYRIGHT | |
-This library is free software, you can redistribute it and/or modify | |
+This library is free software. You can redistribute it and/or modify | |
it under the same terms as Perl itself. | |
=cut | |
diff --git a/script/myapp_fastcgi.pl b/script/myapp_fastcgi.pl | |
index ade4959..1cdd628 100755 | |
--- a/script/myapp_fastcgi.pl | |
+++ b/script/myapp_fastcgi.pl | |
@@ -1,4 +1,4 @@ | |
-#!/usr/bin/perl -w | |
+#!/usr/bin/env perl | |
BEGIN { $ENV{CATALYST_ENGINE} ||= 'FastCGI' } | |
@@ -12,7 +12,7 @@ use MyApp; | |
my $help = 0; | |
my ( $listen, $nproc, $pidfile, $manager, $detach, $keep_stderr ); | |
- | |
+ | |
GetOptions( | |
'help|?' => \$help, | |
'listen|l=s' => \$listen, | |
@@ -25,13 +25,13 @@ GetOptions( | |
pod2usage(1) if $help; | |
-MyApp->run( | |
- $listen, | |
+MyApp->run( | |
+ $listen, | |
{ nproc => $nproc, | |
- pidfile => $pidfile, | |
+ pidfile => $pidfile, | |
manager => $manager, | |
detach => $detach, | |
- keep_stderr => $keep_stderr, | |
+ keep_stderr => $keep_stderr, | |
} | |
); | |
@@ -44,7 +44,7 @@ myapp_fastcgi.pl - Catalyst FastCGI | |
=head1 SYNOPSIS | |
myapp_fastcgi.pl [options] | |
- | |
+ | |
Options: | |
-? -help display this help and exits | |
-l -listen Socket path to listen on | |
@@ -73,7 +73,7 @@ Catalyst Contributors, see Catalyst.pm | |
=head1 COPYRIGHT | |
-This library is free software, you can redistribute it and/or modify | |
+This library is free software. You can redistribute it and/or modify | |
it under the same terms as Perl itself. | |
=cut | |
diff --git a/script/myapp_server.pl b/script/myapp_server.pl | |
index ffd0163..e882de5 100755 | |
--- a/script/myapp_server.pl | |
+++ b/script/myapp_server.pl | |
@@ -1,10 +1,10 @@ | |
-#!/usr/bin/perl -w | |
+#!/usr/bin/env perl | |
-BEGIN { | |
+BEGIN { | |
$ENV{CATALYST_ENGINE} ||= 'HTTP'; | |
- $ENV{CATALYST_SCRIPT_GEN} = 31; | |
+ $ENV{CATALYST_SCRIPT_GEN} = 38; | |
require Catalyst::Engine::HTTP; | |
-} | |
+} | |
use strict; | |
use warnings; | |
@@ -20,50 +20,91 @@ my $host = undef; | |
my $port = $ENV{MYAPP_PORT} || $ENV{CATALYST_PORT} || 3000; | |
my $keepalive = 0; | |
my $restart = $ENV{MYAPP_RELOAD} || $ENV{CATALYST_RELOAD} || 0; | |
-my $restart_delay = 1; | |
-my $restart_regex = '(?:/|^)(?!\.#).+(?:\.yml$|\.yaml$|\.conf|\.pm)$'; | |
-my $restart_directory = undef; | |
-my $follow_symlinks = 0; | |
+my $background = 0; | |
+my $pidfile = undef; | |
+ | |
+my $check_interval; | |
+my $file_regex; | |
+my $watch_directory; | |
+my $follow_symlinks; | |
my @argv = @ARGV; | |
GetOptions( | |
'debug|d' => \$debug, | |
- 'fork' => \$fork, | |
+ 'fork|f' => \$fork, | |
'help|?' => \$help, | |
'host=s' => \$host, | |
- 'port=s' => \$port, | |
+ 'port|p=s' => \$port, | |
'keepalive|k' => \$keepalive, | |
'restart|r' => \$restart, | |
- 'restartdelay|rd=s' => \$restart_delay, | |
- 'restartregex|rr=s' => \$restart_regex, | |
- 'restartdirectory=s@' => \$restart_directory, | |
+ 'restartdelay|rd=s' => \$check_interval, | |
+ 'restartregex|rr=s' => \$file_regex, | |
+ 'restartdirectory=s@' => \$watch_directory, | |
'followsymlinks' => \$follow_symlinks, | |
+ 'background' => \$background, | |
+ 'pidfile=s' => \$pidfile, | |
); | |
pod2usage(1) if $help; | |
-if ( $restart && $ENV{CATALYST_ENGINE} eq 'HTTP' ) { | |
- $ENV{CATALYST_ENGINE} = 'HTTP::Restarter'; | |
-} | |
if ( $debug ) { | |
$ENV{CATALYST_DEBUG} = 1; | |
} | |
-# This is require instead of use so that the above environment | |
-# variables can be set at runtime. | |
-require MyApp; | |
- | |
-MyApp->run( $port, $host, { | |
- argv => \@argv, | |
- 'fork' => $fork, | |
- keepalive => $keepalive, | |
- restart => $restart, | |
- restart_delay => $restart_delay, | |
- restart_regex => qr/$restart_regex/, | |
- restart_directory => $restart_directory, | |
- follow_symlinks => $follow_symlinks, | |
-} ); | |
+# If we load this here, then in the case of a restarter, it does not | |
+# need to be reloaded for each restart. | |
+require Catalyst; | |
+ | |
+# If this isn't done, then the Catalyst::Devel tests for the restarter | |
+# fail. | |
+$| = 1 if $ENV{HARNESS_ACTIVE}; | |
+ | |
+my $runner = sub { | |
+ # This is require instead of use so that the above environment | |
+ # variables can be set at runtime. | |
+ require MyApp; | |
+ | |
+ MyApp->run( | |
+ $port, $host, | |
+ { | |
+ argv => \@argv, | |
+ 'fork' => $fork, | |
+ keepalive => $keepalive, | |
+ background => $background, | |
+ pidfile => $pidfile, | |
+ } | |
+ ); | |
+}; | |
+ | |
+if ( $restart ) { | |
+ die "Cannot run in the background and also watch for changed files.\n" | |
+ if $background; | |
+ | |
+ require Catalyst::Restarter; | |
+ | |
+ my $subclass = Catalyst::Restarter->pick_subclass; | |
+ | |
+ my %args; | |
+ $args{follow_symlinks} = 1 | |
+ if $follow_symlinks; | |
+ $args{directories} = $watch_directory | |
+ if defined $watch_directory; | |
+ $args{sleep_interval} = $check_interval | |
+ if defined $check_interval; | |
+ $args{filter} = qr/$file_regex/ | |
+ if defined $file_regex; | |
+ | |
+ my $restarter = $subclass->new( | |
+ %args, | |
+ start_sub => $runner, | |
+ ); | |
+ | |
+ $restarter->run_and_watch; | |
+} | |
+else { | |
+ $runner->(); | |
+} | |
1; | |
@@ -86,6 +127,7 @@ myapp_server.pl [options] | |
-r -restart restart when files get modified | |
(defaults to false) | |
-rd -restartdelay delay between file checks | |
+ (ignored if you have Linux::Inotify2 installed) | |
-rr -restartregex regex match files that trigger | |
a restart when modified | |
(defaults to '\.yml$|\.yaml$|\.conf|\.pm$') | |
@@ -94,6 +136,9 @@ myapp_server.pl [options] | |
(defaults to '[SCRIPT_DIR]/..') | |
-follow_symlinks follow symlinks in search directories | |
(defaults to false. this is a no-op on Win32) | |
+ -background run the process in the background | |
+ -pidfile specify filename for pid file | |
+ | |
See also: | |
perldoc Catalyst::Manual | |
perldoc Catalyst::Manual::Intro | |
@@ -108,7 +153,7 @@ Catalyst Contributors, see Catalyst.pm | |
=head1 COPYRIGHT | |
-This library is free software, you can redistribute it and/or modify | |
+This library is free software. You can redistribute it and/or modify | |
it under the same terms as Perl itself. | |
=cut | |
diff --git a/script/myapp_test.pl b/script/myapp_test.pl | |
index aa7fd0c..0025e9a 100755 | |
--- a/script/myapp_test.pl | |
+++ b/script/myapp_test.pl | |
@@ -1,4 +1,4 @@ | |
-#!/usr/bin/perl -w | |
+#!/usr/bin/env perl | |
use strict; | |
use warnings; | |
@@ -47,7 +47,7 @@ Catalyst Contributors, see Catalyst.pm | |
=head1 COPYRIGHT | |
-This library is free software, you can redistribute it and/or modify | |
+This library is free software. You can redistribute it and/or modify | |
it under the same terms as Perl itself. | |
=cut | |
-- | |
1.6.2.4+GitX |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment