X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FHelper.pm;h=f2393c6677d621894c2d52f0e9214b6e1203e8e6;hb=4efc6b10bc03a7f8d7390e1f58bfb9ae9341863b;hp=05aca39b4fcb2d271fcd51eb6b0559298fca6546;hpb=61cfdd57906b53df9ebfdecfc3481ffa14e74390;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Helper.pm b/lib/Catalyst/Helper.pm index 05aca39..f2393c6 100644 --- a/lib/Catalyst/Helper.pm +++ b/lib/Catalyst/Helper.pm @@ -8,6 +8,7 @@ use File::Path; use IO::File; use FindBin; use Template; +use Catalyst; my %cache; @@ -21,7 +22,7 @@ See L =head1 DESCRIPTION -Bootstrap a Catalyst application. +Bootstrap a Catalyst application. Autogenerates scripts =head2 METHODS @@ -49,6 +50,8 @@ sub get_file { =head3 mk_app +Create the main application skeleton. + =cut sub mk_app { @@ -57,9 +60,15 @@ sub mk_app { $self->{name} = $name; $self->{dir} = $name; $self->{dir} =~ s/\:\:/-/g; + $self->{appprefix} = lc $self->{dir}; + $self->{appprefix} =~ s/-/_/g; $self->{startperl} = $Config{startperl}; + $self->{scriptgen} = $Catalyst::CATALYST_SCRIPT_GEN; + $self->{author} = $self->{author} = $ENV{'AUTHOR'} + || @{ [ getpwuid($<) ] }[6]; $self->_mk_dirs; $self->_mk_appclass; + $self->_mk_build; $self->_mk_makefile; $self->_mk_readme; $self->_mk_changes; @@ -74,12 +83,17 @@ sub mk_app { =head3 mk_component +This method is called by create.pl to make new components +for your application. + =cut sub mk_component { my $self = shift; my $app = shift; $self->{app} = $app; + $self->{author} = $self->{author} = $ENV{'AUTHOR'} + || @{ [ getpwuid($<) ] }[6]; $self->{base} = File::Spec->catdir( $FindBin::Bin, '..' ); unless ( $_[0] =~ /^model|m|view|v|controller|c\$/i ) { my $helper = shift; @@ -152,6 +166,8 @@ sub mk_component { =head3 mk_dir +Surprisingly, this function makes a directory. + =cut sub mk_dir { @@ -169,6 +185,8 @@ sub mk_dir { =head3 mk_file +writes content to a file. + =cut sub mk_file { @@ -207,7 +225,8 @@ sub next_test { =head3 render_file -Render and create a file from a template in DATA. +Render and create a file from a template in DATA using +Template Toolkit. =cut @@ -254,6 +273,12 @@ sub _mk_appclass { $self->render_file( 'appclass', "$mod.pm" ); } +sub _mk_build { + my $self = shift; + my $dir = $self->{dir}; + $self->render_file( 'build', "$dir\/Build.PL" ); +} + sub _mk_makefile { my $self = shift; my $dir = $self->{dir}; @@ -284,36 +309,41 @@ sub _mk_apptest { sub _mk_cgi { my $self = shift; my $script = $self->{script}; - $self->render_file( 'cgi', "$script\/cgi.pl" ); - chmod 0700, "$script/cgi.pl"; + my $appprefix = $self->{appprefix}; + $self->render_file( 'cgi', "$script\/$appprefix\_cgi.pl" ); + chmod 0700, "$script/$appprefix\_cgi.pl"; } sub _mk_fcgi { my $self = shift; my $script = $self->{script}; - $self->render_file( 'fcgi', "$script\/fcgi.pl" ); - chmod 0700, "$script/fcgi.pl"; + my $appprefix = $self->{appprefix}; + $self->render_file( 'fcgi', "$script\/$appprefix\_fcgi.pl" ); + chmod 0700, "$script/$appprefix\_fcgi.pl"; } sub _mk_server { my $self = shift; my $script = $self->{script}; - $self->render_file( 'server', "$script\/server.pl" ); - chmod 0700, "$script/server.pl"; + my $appprefix = $self->{appprefix}; + $self->render_file( 'server', "$script\/$appprefix\_server.pl" ); + chmod 0700, "$script/$appprefix\_server.pl"; } sub _mk_test { my $self = shift; my $script = $self->{script}; - $self->render_file( 'test', "$script/test.pl" ); - chmod 0700, "$script/test.pl"; + my $appprefix = $self->{appprefix}; + $self->render_file( 'test', "$script/$appprefix\_test.pl" ); + chmod 0700, "$script/$appprefix\_test.pl"; } sub _mk_create { my $self = shift; my $script = $self->{script}; - $self->render_file( 'create', "$script\/create.pl" ); - chmod 0700, "$script/create.pl"; + my $appprefix = $self->{appprefix}; + $self->render_file( 'create', "$script\/$appprefix\_create.pl" ); + chmod 0700, "$script/$appprefix\_create.pl"; } sub _mk_compclass { @@ -348,6 +378,11 @@ All helper classes should be under one of the following namespaces. Catalyst::Helper::View:: Catalyst::Helper::Controller:: +=head1 NOTE + +The helpers will read author name from /etc/passwd by default. +To override, please export the AUTHOR variable. + =head1 SEE ALSO L, L, L, @@ -359,8 +394,8 @@ Sebastian Riedel, C =head1 LICENSE -This library is free software . You can redistribute it and/or modify it under -the same terms as perl itself. +This library is free software . You can redistribute it and/or modify +it under the same terms as perl itself. =cut @@ -375,10 +410,7 @@ use Catalyst qw/-Debug/; our $VERSION = '0.01'; -[% name %]->config( - name => '[% name %]', - root => '[% base %]/root', -); +[% name %]->config( name => '[% name %]' ); [% name %]->setup; @@ -401,32 +433,36 @@ Very nice application. =head1 AUTHOR -Clever guy +[%author%] =head1 LICENSE -This library is free software . You can redistribute it and/or modify it under -the same terms as perl itself. +This library is free software . You can redistribute it and/or modify +it under the same terms as perl itself. =cut 1; -__makefile__ -use ExtUtils::MakeMaker; - -WriteMakefile( - NAME => '[% name %]', - VERSION_FROM => 'lib/[% class %].pm', - PREREQ_PM => { Catalyst => 5 }, - test => { TESTS => join ' ', ( glob('t/*.t'), glob('t/*/*.t') ) } +__build__ +use strict; +use Catalyst::Build; + +my $build = Catalyst::Build->new( + create_makefile_pl => 'passthrough', + license => 'perl', + module_name => '[% name %]', + requires => { Catalyst => '5.04' }, + script_files => [ glob('script/*') ], + test_files => [ glob('t/*.t'), glob('t/*/*.t') ] ); +$build->create_build_script; __readme__ -Run script/server.pl to test the application. +Run script/[% apprefix %]_server.pl to test the application. __changes__ -This file documents the revision history for Perl extension $name. +This file documents the revision history for Perl extension [% name %]. 0.01 [% time %] - initial revision, generated by Catalyst @@ -455,7 +491,7 @@ plan skip_all => 'set TEST_POD to enable this test' unless $ENV{TEST_POD}; all_pod_coverage_ok(); -__cgi_ +__cgi__ [% startperl %] -w BEGIN { $ENV{CATALYST_ENGINE} = 'CGI' } @@ -488,8 +524,8 @@ Sebastian Riedel, C 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. +This library is free software. You can redistribute it and/or modify +it under the same terms as perl itself. =cut @@ -527,15 +563,18 @@ Sebastian Riedel, C 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. +This library is free software. You can redistribute it and/or modify +it under the same terms as perl itself. =cut __server__ [% startperl %] -w -BEGIN { $ENV{CATALYST_ENGINE} = 'HTTP' } +BEGIN { + $ENV{CATALYST_ENGINE} = 'HTTP'; + $ENV{CATALYST_SCRIPT_GEN} = [% scriptgen %]; +} use strict; use Getopt::Long; @@ -549,7 +588,7 @@ my $port = 3000; GetOptions( 'help|?' => \$help, 'port=s' => \$port ); -pod2usage(1) if \$help; +pod2usage(1) if $help; [% name %]->run($port); @@ -583,8 +622,8 @@ Sebastian Riedel, C 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. +This library is free software. You can redistribute it and/or modify +it under the same terms as perl itself. =cut @@ -641,8 +680,8 @@ Sebastian Riedel, C 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. +This library is free software. You can redistribute it and/or modify +it under the same terms as perl itself. =cut @@ -702,8 +741,8 @@ Sebastian Riedel, C 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. +This library is free software. You can redistribute it and/or modify +it under the same terms as perl itself. =cut @@ -715,7 +754,7 @@ use base 'Catalyst::Base'; [% IF type == 'C' %] sub default : Private { - my ( $self, $c ) = \@_; + my ( $self, $c ) = @_; $c->res->output('Congratulations, [% class %] is on Catalyst!'); } @@ -734,12 +773,12 @@ Very nice component. =head1 AUTHOR -Clever guy +[%author%] =head1 LICENSE -This library is free software . You can redistribute it and/or modify it under -the same terms as perl itself. +This library is free software . You can redistribute it and/or modify +it under the same terms as perl itself. =cut