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 ) = @_;
+
+ # Needs to be here for PAR
+ require Catalyst;
+
return 0 if $name =~ /[^\w\:]/;
$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] }
$self->_mk_apptest;
$self->_mk_images;
$self->_mk_favicon;
+ $self->_mk_package;
}
$self->_mk_cgi;
$self->_mk_fastcgi;
}
+sub _mk_package {
+ my $self = shift;
+ my $script = $self->{script};
+ my $appprefix = $self->{appprefix};
+ $self->render_file( 'package', "$script\/$appprefix\_package.pl" );
+ chmod 0700, "$script/$appprefix\_package.pl";
+}
+
=head1 HELPERS
Helpers are classes that provide two methods.
#
# Set flags and add plugins for the application
#
-# -Debug : activates the debug mode for very useful log messages
+# -Debug: activates the debug mode for very useful log messages
# Static::Simple: will serve static files from the applications root directory
#
use Catalyst qw/-Debug Static::Simple/;
use Catalyst::Build;
my $build = Catalyst::Build->new(
- create_makefile_pl => 'passthrough',
license => 'perl',
module_name => '[% name %]',
requires => { Catalyst => '5.49' },
use [% name %];
my $help = 0;
-my ( $listen, $nproc );
+my ( $listen, $nproc, $pidfile );
GetOptions(
- 'help|?' => \$help,
- 'listen|l=s' => \$listen,
- 'nproc|n=i' => \$nproc,
+ 'help|?' => \$help,
+ 'listen|l=s' => \$listen,
+ 'nproc|n=i' => \$nproc,
+ 'pidfile|p=s' => \$pidfile,
);
pod2usage(1) if $help;
-[% name %]->run( $listen, { nproc => $nproc } );
+[% name %]->run(
+ $listen,
+ { nproc => $nproc,
+ pidfile => $pidfile,
+ }
+);
1;
can be HOST:PORT, :PORT or a
filesystem path
-n -nproc specify number of processes to keep
- to serve requests (defaults to 1)
+ to serve requests (defaults to 1,
+ requires -listen)
+ -p -pidfile specify filename for pid file
+ (requires -listen)
=head1 DESCRIPTION
use FindBin;
use lib "$FindBin::Bin/../lib";
+my $debug = 0;
my $fork = 0;
my $help = 0;
my $host = undef;
my @argv = @ARGV;
GetOptions(
+ 'debug|d' => \$debug,
'fork' => \$fork,
'help|?' => \$help,
'host=s' => \$host,
if ( $restart ) {
$ENV{CATALYST_ENGINE} = 'HTTP::Restarter';
}
+if ( $debug ) {
+ $ENV{CATALYST_DEBUG} = 1;
+}
require [% name %];
[% appprefix %]_server.pl [options]
Options:
+ -d -debug force debug mode
-f -fork handle each request in a new process
(defaults to false)
-? -help display this help and exits
__test__
[% startperl %] -w
-BEGIN { $ENV{CATALYST_ENGINE} ||= 'Test' }
-
use strict;
use Getopt::Long;
use Pod::Usage;
use FindBin;
use lib "$FindBin::Bin/../lib";
-use [% name %];
+use Catalyst::Test '[% name %]';
my $help = 0;
pod2usage(1) if ( $help || !$ARGV[0] );
-print [% name %]->run($ARGV[0])->content . "\n";
+print request($ARGV[0])->content . "\n";
1;
=head1 AUTHOR
-Sebastian Riedel, C<sri\@oook.de>
+Sebastian Riedel, C<sri@oook.de>
+
+=head1 COPYRIGHT
+
+Copyright 2004 Sebastian Riedel. All rights reserved.
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+__package__
+[% startperl %] -w
+
+use strict;
+use Getopt::Long;
+use Pod::Usage;
+use Catalyst::PAR;
+
+my $engine = 'CGI';
+my $help = 0;
+my $par = '[% appprefix %].par';
+
+GetOptions(
+ 'engine=s' => \$engine,
+ 'help|?' => \$help,
+ 'par=s' => \$par
+);
+
+pod2usage(1) if $help;
+
+Catalyst::PAR->new->package( {
+ engine => $engine,
+ par => $par,
+ class => '[% name %]'
+} );
+
+1;
+
+=head1 NAME
+
+[% appprefix %]_package.pl - Package a Catalyst application
+
+=head1 SYNOPSIS
+
+[% appprefix %]_package.pl
+
+ Options:
+ -engine engine to use for dependency detection
+ -help display this help and exits
+ -par name for the par archive
+
+ Examples:
+ [% appprefix %]_package.pl [% appprefix %].par FastCGI
+ [% appprefix %]_package.pl foo_linux_i386_apache2.par Apache2
+
+ See also:
+ perldoc Catalyst::Manual
+ perldoc Catalyst::Manual::Intro
+ perldoc pp
+
+=head1 DESCRIPTION
+
+Package a Catalyst application with L<PAR>.
+
+=head1 AUTHOR
+
+Sebastian Riedel, C<sri@oook.de>
=head1 COPYRIGHT
=over 4
-# Uncomment, modify and add new actions to fit your needs
+#
+# Uncomment and modify this or add new actions to fit your needs
+#
#=item default
#
#=cut