X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FHelper.pm;h=1838b7aa82ca01e7bac8632f5088e84d88ffbd8e;hb=2fb22e6e6967ab08a4ea3ca996378e59fe2de2c6;hp=bfdfefc6def01f3e24ff814ffefb8e359d43dd76;hpb=2e4a6ec399b96865713c7e08c8dcb10dbd7ec5da;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Helper.pm b/lib/Catalyst/Helper.pm index bfdfefc..1838b7a 100644 --- a/lib/Catalyst/Helper.pm +++ b/lib/Catalyst/Helper.pm @@ -2,6 +2,7 @@ package Catalyst::Helper; use strict; use base 'Class::Accessor::Fast'; +use Config; use File::Spec; use File::Path; use IO::File; @@ -69,7 +70,7 @@ sub mk_app { $self->{dir} =~ s/\:\:/-/g; $self->{script} = File::Spec->catdir( $self->{dir}, 'script' ); $self->{appprefix} = Catalyst::Utils::appprefix($name); - $self->{startperl} = '#!/usr/bin/perl -w'; + $self->{startperl} = "#!$Config{perlpath} -w"; $self->{scriptgen} = $Catalyst::CATALYST_SCRIPT_GEN || 4; $self->{author} = $self->{author} = $ENV{'AUTHOR'} || eval { @{ [ getpwuid($<) ] }[6] } @@ -81,7 +82,9 @@ sub mk_app { if ($gen_app) { $self->_mk_dirs; + $self->_mk_config; $self->_mk_appclass; + $self->_mk_rootclass; $self->_mk_readme; $self->_mk_changes; $self->_mk_apptest; @@ -116,7 +119,6 @@ sub mk_component { || eval { @{ [ getpwuid($<) ] }[6] } || 'A clever guy'; $self->{base} ||= File::Spec->catdir( $FindBin::Bin, '..' ); - die $self->{base}; unless ( $_[0] =~ /^(?:model|view|controller)$/i ) { my $helper = shift; my @args = @_; @@ -330,6 +332,9 @@ sub _mk_dirs { $self->{c} = File::Spec->catdir( $self->{mod}, 'Controller' ); $self->mk_dir( $self->{c} ); } + my $name = $self->{name}; + $self->{rootname} = + $self->{short} ? "$name\::C::Root" : "$name\::Controller::Root"; $self->{base} = File::Spec->rel2abs( $self->{dir} ); } @@ -339,6 +344,12 @@ sub _mk_appclass { $self->render_file( 'appclass', "$mod.pm" ); } +sub _mk_rootclass { + my $self = shift; + $self->render_file( 'rootclass', + File::Spec->catfile( $self->{c}, "Root.pm" ) ); +} + sub _mk_makefile { my $self = shift; $self->{path} = File::Spec->catfile( 'lib', split( '::', $self->{name} ) ); @@ -354,6 +365,14 @@ sub _mk_makefile { } } +sub _mk_config { + my $self = shift; + my $dir = $self->{dir}; + my $appprefix = $self->{appprefix}; + $self->render_file( 'config', + File::Spec->catfile( $dir, "$appprefix.yml" ) ); +} + sub _mk_readme { my $self = shift; my $dir = $self->{dir}; @@ -525,21 +544,21 @@ use warnings; # Set flags and add plugins for the application # # -Debug: activates the debug mode for very useful log messages -# Static::Simple: will serve static files from the applications root directory +# Static::Simple: will serve static files from the application's root +# directory # -use Catalyst qw/-Debug Static::Simple/; +use Catalyst qw/-Debug ConfigLoader Static::Simple/; our $VERSION = '0.01'; # -# Configure the application +# Start the application # -__PACKAGE__->config( name => '[% name %]' ); +__PACKAGE__->setup; # -# Start the application +# IMPORTANT: Please look into [% rootname %] for more # -__PACKAGE__->setup; =head1 NAME @@ -553,8 +572,51 @@ __PACKAGE__->setup; Catalyst based application. +=head1 SEE ALSO + +L<[% rootname %]>, L + +=head1 AUTHOR + +[% author %] + +=head1 LICENSE + +This library is free software, you can redistribute it and/or modify +it under the same terms as Perl itself. + +=cut + +1; +__rootclass__ +package [% rootname %]; + +use strict; +use warnings; +use base 'Catalyst::Controller'; + +# +# Sets the actions in this controller to be registered with no prefix +# so they function identically to actions created in MyApp.pm +# +__PACKAGE__->config->{namespace} = ''; + +=head1 NAME + +[% rootname %] - Root Controller for this Catalyst based application + +=head1 SYNOPSIS + +See L<[% name %]>. + +=head1 DESCRIPTION + +Root Controller for this Catalyst based application. + =head1 METHODS +=cut + =head2 default =cut @@ -598,21 +660,19 @@ it under the same terms as Perl itself. __makefile__ use inc::Module::Install; -name('[% dir %]'); -abstract('Catalyst Application'); -author('[% author %]'); -version_from('[% path %]'); -license('perl'); - -include('ExtUtils::AutoInstall'); +name '[% dir %]'; +all_from '[% path %]'; -requires( Catalyst => '5.58' ); +requires Catalyst => '5.64'; -catalyst_files(); +catalyst; -install_script( glob('script/*.pl') ); -auto_install(); -&WriteAll; +install_script glob('script/*.pl'); +auto_install; +WriteAll; +__config__ +--- +name: [% name %] __readme__ Run script/[% appprefix %]_server.pl to test the application. __changes__ @@ -621,11 +681,16 @@ This file documents the revision history for Perl extension [% name %]. 0.01 [% time %] - initial revision, generated by Catalyst __apptest__ +use strict; +use warnings; use Test::More tests => 2; -use_ok( Catalyst::Test, '[% name %]' ); -ok( request('/')->is_success ); +BEGIN { use_ok 'Catalyst::Test', '[% name %]' } + +ok( request('/')->is_success, 'Request should succeed' ); __podtest__ +use strict; +use warnings; use Test::More; eval "use Test::Pod 1.14"; @@ -634,6 +699,8 @@ plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD}; all_pod_files_ok(); __podcoveragetest__ +use strict; +use warnings; use Test::More; eval "use Test::Pod::Coverage 1.04"; @@ -737,7 +804,7 @@ pod2usage(1) if $help; (requires -listen) -d -daemon daemonize (requires -listen) -M -manager specify alternate process manager - (FCGI::ProcessManager sub-class) + (FCGI::ProcManager sub-class) or empty string to disable =head1 DESCRIPTION @@ -803,6 +870,8 @@ if ( $debug ) { $ENV{CATALYST_DEBUG} = 1; } +# This is require instead of use so that the above environment +# variables can be set at runtime. require [% name %]; [% name %]->run( $port, $host, { @@ -1034,12 +1103,14 @@ it under the same terms as Perl itself. 1; __comptest__ +use strict; +use warnings; [% IF long_type == 'Controller' %] use Test::More tests => 3; -use_ok( Catalyst::Test, '[% app %]' ); +use_ok( 'Catalyst::Test', '[% app %]' ); use_ok('[% class %]'); -ok( request('[% uri %]')->is_success ); +ok( request('[% uri %]')->is_success, 'Request should succeed' ); [% ELSE %] use Test::More tests => 1; use_ok('[% class %]');