X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FHelper.pm;h=6a78bf312d0206d51811ffdd97ec85ad2ad8bb15;hb=6ddb9f0109fba570f50a54a74057f81bf8628f12;hp=f4f211031c4791c94d9194511075e9f7eff55a30;hpb=42a57832aea5e5c4684d534aa7d133c15aac4b42;p=catagits%2FCatalyst-Runtime.git diff --git a/lib/Catalyst/Helper.pm b/lib/Catalyst/Helper.pm index f4f2110..6a78bf3 100644 --- a/lib/Catalyst/Helper.pm +++ b/lib/Catalyst/Helper.pm @@ -8,7 +8,7 @@ use File::Path; use IO::File; use FindBin; use Template; -our $CATALYST_SCRIPT_GEN = 2; +use Catalyst; my %cache; @@ -22,7 +22,7 @@ See L =head1 DESCRIPTION -Bootstrap a Catalyst application. +Bootstrap a Catalyst application. Autogenerates scripts =head2 METHODS @@ -50,6 +50,8 @@ sub get_file { =head3 mk_app +Create the main application skeleton. + =cut sub mk_app { @@ -58,10 +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_SCRIPT_GEN; + $self->{scriptgen} = $Catalyst::CATALYST_SCRIPT_GEN; + $self->{author} = $self->{author} = $ENV{'AUTHOR'} + || eval { @{ [ getpwuid($<) ] }[6] } || 'A clever guy'; $self->_mk_dirs; $self->_mk_appclass; + $self->_mk_build; $self->_mk_makefile; $self->_mk_readme; $self->_mk_changes; @@ -76,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'} + || eval { @{ [ getpwuid($<) ] }[6] } || 'A clever guy'; $self->{base} = File::Spec->catdir( $FindBin::Bin, '..' ); unless ( $_[0] =~ /^model|m|view|v|controller|c\$/i ) { my $helper = shift; @@ -95,8 +107,8 @@ sub mk_component { } else { my $type = shift; - my $name = shift; - my $helper = shift; + my $name = shift || "Missing name for model/view/controller"; + my $helper = shift ; my @args = @_; return 0 if $name =~ /[^\w\:]/; $type = 'M' if $type =~ /model|m/i; @@ -154,6 +166,8 @@ sub mk_component { =head3 mk_dir +Surprisingly, this function makes a directory. + =cut sub mk_dir { @@ -171,6 +185,8 @@ sub mk_dir { =head3 mk_file +writes content to a file. + =cut sub mk_file { @@ -209,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 @@ -256,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}; @@ -286,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 { @@ -350,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, @@ -361,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 @@ -377,10 +410,7 @@ use Catalyst qw/-Debug/; our $VERSION = '0.01'; -[% name %]->config( - name => '[% name %]', - root => '[% base %]/root', -); +[% name %]->config( name => '[% name %]' ); [% name %]->setup; @@ -403,32 +433,37 @@ 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.10' }, + create_makefile_pl => 'passthrough', + 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 @@ -490,8 +525,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 @@ -529,8 +564,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 @@ -588,8 +623,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 @@ -646,8 +681,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 @@ -707,8 +742,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 @@ -739,12 +774,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