use strict;
use base 'Class::Accessor::Fast';
-use Config;
use File::Spec;
use File::Path;
use IO::File;
use FindBin;
use Template;
-use Catalyst;
use Catalyst::Utils;
use Catalyst::Exception;
sub mk_app {
my ( $self, $name ) = @_;
- return 0 if $name =~ /[^\w\:]/;
+
+ # Needs to be here for PAR
+ require Catalyst;
+
+ if ( $name =~ /[^\w\:]/ ) {
+ warn "Error: Invalid application name.\n";
+ return 0;
+ }
$self->{name} = $name;
$self->{dir} = $name;
$self->{dir} =~ s/\:\:/-/g;
$self->{script} = File::Spec->catdir( $self->{dir}, 'script' );
$self->{appprefix} = Catalyst::Utils::appprefix($name);
- $self->{startperl} = $Config{startperl};
+ $self->{startperl} = '#!/usr/bin/perl -w';
$self->{scriptgen} = $Catalyst::CATALYST_SCRIPT_GEN || 4;
$self->{author} = $self->{author} = $ENV{'AUTHOR'}
|| eval { @{ [ getpwuid($<) ] }[6] }
all_pod_coverage_ok();
__cgi__
-[% startperl %] -w
+[% startperl %]
BEGIN { $ENV{CATALYST_ENGINE} ||= 'CGI' }
=cut
__fastcgi__
-[% startperl %] -w
+[% startperl %]
BEGIN { $ENV{CATALYST_ENGINE} ||= 'FastCGI' }
use [% name %];
my $help = 0;
-my ( $listen, $nproc, $pidfile );
+my ( $listen, $nproc, $pidfile, $manager, $detach );
GetOptions(
'help|?' => \$help,
'listen|l=s' => \$listen,
'nproc|n=i' => \$nproc,
'pidfile|p=s' => \$pidfile,
+ 'manager|M=s' => \$manager,
+ 'daemon|d' => \$detach,
);
pod2usage(1) if $help;
$listen,
{ nproc => $nproc,
pidfile => $pidfile,
+ manager => $manager,
+ detach => $detach,
}
);
requires -listen)
-p -pidfile specify filename for pid file
(requires -listen)
+ -d -daemon daemonize (requires -listen)
+ -M -manager specify alternate process manager
+ (FCGI::ProcessManager sub-class)
+ or empty string to disable
=head1 DESCRIPTION
=cut
__server__
-[% startperl %] -w
+[% startperl %]
BEGIN {
$ENV{CATALYST_ENGINE} ||= 'HTTP';
my $help = 0;
my $host = undef;
my $port = 3000;
+my $keepalive = 0;
my $restart = 0;
my $restart_delay = 1;
my $restart_regex = '\.yml$|\.yaml$|\.pm$';
'help|?' => \$help,
'host=s' => \$host,
'port=s' => \$port,
+ 'keepalive|k' => \$keepalive,
'restart|r' => \$restart,
'restartdelay|rd=s' => \$restart_delay,
'restartregex|rr=s' => \$restart_regex
require [% name %];
[% name %]->run( $port, $host, {
- argv => \@argv,
- 'fork' => $fork,
- restart => $restart,
+ argv => \@argv,
+ 'fork' => $fork,
+ keepalive => $keepalive,
+ restart => $restart,
restart_delay => $restart_delay,
restart_regex => qr/$restart_regex/
} );
-? -help display this help and exits
-host host (defaults to all)
-p -port port (defaults to 3000)
+ -k -keepalive enable keep-alive connections
-r -restart restart when files got modified
(defaults to false)
-rd -restartdelay delay between file checks
=cut
__test__
-[% startperl %] -w
+[% startperl %]
use strict;
use Getopt::Long;
=cut
__create__
-[% startperl %] -w
+[% startperl %]
use strict;
use Getopt::Long;
=cut
__package__
-[% startperl %] -w
+[% startperl %]
use strict;
use Getopt::Long;
use Pod::Usage;
use Catalyst::PAR;
-my $help = 0;
+my $core = 0;
+my $classes = '';
+my $engine = 'CGI';
+my $help = 0;
+my $multiarch = 0;
+my $par = '[% appprefix %].par';
-GetOptions( 'help|?' => \$help );
+GetOptions(
+ 'classes=s' => \$classes,
+ 'core' => \$core,
+ 'engine=s' => \$engine,
+ 'help|?' => \$help,
+ 'multiarch' => \$multiarch,
+ 'par=s' => \$par
+);
pod2usage(1) if $help;
-my $par = Catalyst::PAR->new->package( {
- par => $ARGV[0] || '[% appprefix %].par',
- engine => $ARGV[1],
- class => '[% name %]'
+Catalyst::PAR->new->package( {
+ classes => $classes,
+ core => $core,
+ engine => $engine,
+ par => $par,
+ multiarch => $multiarch,
+ class => '[% name %]'
} );
1;
=head1 NAME
-[% appprefix %]_package.pl - Package a Catalyst application
+[% appprefix %]_package.pl - Package Catalyst Applications
=head1 SYNOPSIS
-[% appprefix %]_package.pl [par] [engine]
+[% appprefix %]_package.pl
Options:
- -help display this help and exits
+ -classes comma separated list of additional classes to
+ include in package
+ -core also include modules bundled with Perl (defaults to false)
+ -engine engine to use for dependency detection (defaults to CGI)
+ -help display this help and exits
+ -multiarch enable multiarch support (defaults to false)
+ -par name for the par archive (defaults to [% appprefix %].par)
Examples:
- [% appprefix %]_package.pl [% appprefix %].par FastCGI
- [% appprefix %]_package.pl foo_linux_i386_apache2.par Apache2
+ [% appprefix %]_package.pl -engine FastCGI
+ [% appprefix %]_package.pl -par foo_linux_i386_apache2.par -engine Apache2
+ [% appprefix %]_package.pl -classes Test::More,Foo::Bar -par foo.par
See also:
perldoc Catalyst::Manual
=head1 DESCRIPTION
-Package a Catalyst application with L<PAR>.
+Package Catalyst Applications with L<PAR>.
=head1 AUTHOR