Added -makefile to catalyst.pl to generate a new Makefile.PL
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Helper.pm
index f34799b..878dc76 100644 (file)
@@ -74,24 +74,30 @@ sub mk_app {
     $self->{author}    = $self->{author} = $ENV{'AUTHOR'}
       || eval { @{ [ getpwuid($<) ] }[6] }
       || 'Catalyst developer';
-
-    unless ( $self->{scripts} ) {
+      
+    my $gen_scripts  = ( $self->{makefile} ) ? 0 : 1;
+    my $gen_makefile = ( $self->{scripts}  ) ? 0 : 1;
+    my $gen_app      = ( $self->{scripts} || $self->{makefile} ) ? 0 : 1;
+    
+    if ( $gen_app ) {
         $self->_mk_dirs;
         $self->_mk_appclass;
-        $self->_mk_build;
-        $self->_mk_makefile;
         $self->_mk_readme;
         $self->_mk_changes;
         $self->_mk_apptest;
         $self->_mk_images;
         $self->_mk_favicon;
-        $self->_mk_package;
     }
-    $self->_mk_cgi;
-    $self->_mk_fastcgi;
-    $self->_mk_server;
-    $self->_mk_test;
-    $self->_mk_create;
+    if ( $gen_makefile ) { 
+        $self->_mk_makefile;
+    }    
+    if ( $gen_scripts ) {
+        $self->_mk_cgi;
+        $self->_mk_fastcgi;
+        $self->_mk_server;
+        $self->_mk_test;
+        $self->_mk_create;
+    }
     return 1;
 }
 
@@ -136,13 +142,15 @@ sub mk_component {
         $type              = 'M' if $type =~ /model/i;
         $type              = 'V' if $type =~ /view/i;
         $type              = 'C' if $type =~ /controller/i;
-        $type              = $self->{long_type} unless $self->{short};
-        $self->{type}      = $type;
-        $self->{name}      = $name;
-        $self->{class}     = "$app\::$type\::$name";
+        my $appdir = File::Spec->catdir( split /\:\:/, $app );
+        my $test_path =
+          File::Spec->catdir( $FindBin::Bin, '..', 'lib', $appdir, 'C' );
+        $type = $self->{long_type} unless -d $test_path;
+        $self->{type}  = $type;
+        $self->{name}  = $name;
+        $self->{class} = "$app\::$type\::$name";
 
         # Class
-        my $appdir = File::Spec->catdir( split /\:\:/, $app );
         my $path =
           File::Spec->catdir( $FindBin::Bin, '..', 'lib', $appdir, $type );
         my $file = $name;
@@ -220,7 +228,9 @@ sub mk_file {
     my ( $self, $file, $content ) = @_;
     if ( -e $file ) {
         print qq/ exists "$file"\n/;
-        return 0 unless ( $self->{'.newfiles'} || $self->{scripts} );
+        return 0 unless ( $self->{'.newfiles'}
+                       || $self->{scripts}
+                       || $self->{makefile} );
         if ( $self->{'.newfiles'} ) {
             if ( my $f = IO::File->new("< $file") ) {
                 my $oldcontent = join( '', (<$f>) );
@@ -258,10 +268,9 @@ sub next_test {
         $self->{uri} = $prefix;
     }
     my $dir  = $self->{test_dir};
-    my $type = $self->{type};
-    $dir = File::Spec->catdir( $dir, $type );
+    my $type = lc $self->{type};
     $self->mk_dir($dir);
-    return File::Spec->catfile( $dir, $tname );
+    return File::Spec->catfile( $dir, "$type\_$tname" );
 }
 
 =head3 render_file
@@ -299,17 +308,6 @@ sub _mk_dirs {
     $self->{t} = File::Spec->catdir( $self->{dir}, 't' );
     $self->mk_dir( $self->{t} );
 
-    if ( $self->{short} ) {
-        $self->mk_dir( File::Spec->catdir( $self->{t}, 'M' ) );
-        $self->mk_dir( File::Spec->catdir( $self->{t}, 'V' ) );
-        $self->mk_dir( File::Spec->catdir( $self->{t}, 'C' ) );
-    }
-    else {
-        $self->mk_dir( File::Spec->catdir( $self->{t}, 'Model' ) );
-        $self->mk_dir( File::Spec->catdir( $self->{t}, 'View' ) );
-        $self->mk_dir( File::Spec->catdir( $self->{t}, 'Controller' ) );
-    }
-
     $self->{class} = File::Spec->catdir( split( /\:\:/, $self->{name} ) );
     $self->{mod} = File::Spec->catdir( $self->{lib}, $self->{class} );
     $self->mk_dir( $self->{mod} );
@@ -339,15 +337,11 @@ 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};
+    $self->{path} = File::Spec->catfile( 'lib', split( '::', $self->{name} ) );
+    $self->{path} .= '.pm';
+    my $dir = $self->{dir};
     $self->render_file( 'makefile', "$dir\/Makefile.PL" );
 }
 
@@ -447,14 +441,6 @@ sub _mk_favicon {
 
 }
 
-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.
@@ -539,9 +525,7 @@ Catalyst based application.
 
 =head1 METHODS
 
-=over 4
-
-=item default
+=head2 default
 
 =cut
 
@@ -558,7 +542,7 @@ sub default : Private {
 #
 # Uncomment and modify this end action after adding a View component
 #
-#=item end
+#=head2 end
 #
 #=cut
 #
@@ -566,11 +550,9 @@ sub default : Private {
 #    my ( $self, $c ) = @_;
 #
 #    # Forward to View unless response body is already defined
-#    $c->forward('View::') unless $c->response->body;
+#    $c->forward( $c->view('') ) unless $c->response->body;
 #}
 
-=back
-
 =head1 AUTHOR
 
 [% author %]
@@ -584,52 +566,26 @@ it under the same terms as Perl itself.
 
 1;
 __makefile__
-    unless ( eval "use Module::Build::Compat 0.02; 1" ) {
-        print "This module requires Module::Build to install itself.\n";
-
-        require ExtUtils::MakeMaker;
-        my $yn =
-          ExtUtils::MakeMaker::prompt( '  Install Module::Build now from CPAN?',            'y' );
+use inc::Module::Install;
 
-        unless ( $yn =~ /^y/i ) {
-            die " *** Cannot install without Module::Build.  Exiting ...\n";
-        }
+name('[% dir %]');
+abstract('Catalyst Application');
+author('[% author %]');
+version_from('[% path %]');
+license('perl');
 
-        require Cwd;
-        require File::Spec;
-        require CPAN;
+requires( Catalyst => '5.57' );
 
-        # Save this 'cause CPAN will chdir all over the place.
-        my $cwd      = Cwd::cwd();
-        my $makefile = File::Spec->rel2abs($0);
+install_script( glob('script/*.pl') );
 
-        CPAN::Shell->install('Module::Build::Compat')
-          or die " *** Cannot install without Module::Build.  Exiting ...\n";
+catalyst_files();
 
-        chdir $cwd or die "Cannot chdir() back to $cwd: $!";
-    }
-    eval "use Module::Build::Compat 0.02; 1" or die $@;
-    use lib '_build/lib';
-    Module::Build::Compat->run_build_pl( args => \@ARGV );
-    require Module::Build;
-    Module::Build::Compat->write_makefile( build_class => 'Module::Build' );
-__build__
-use strict;
-use Catalyst::Build;
-
-my $build = Catalyst::Build->new(
-    license            => 'perl',
-    module_name        => '[% name %]',
-    requires           => { Catalyst => '5.49' },
-    create_makefile_pl => 'passthrough',
-    script_files       => [ glob('script/*') ],
-    test_files         => [ glob('t/*.t'), glob('t/*/*.t') ]
-);
-$build->create_build_script;
+&WriteAll;
 __readme__
 Run script/[% appprefix %]_server.pl to test the application.
 __changes__
 This file documents the revision history for Perl extension [% name %].
+
 0.01  [% time %]
         - initial revision, generated by Catalyst
 __apptest__
@@ -936,18 +892,15 @@ use Catalyst::Helper;
 
 my $force = 0;
 my $help  = 0;
-my $short = 0;
 
 GetOptions(
-    'force'  => \$force,
-    'help|?' => \$help,
-    'short'  => \$short
+    'nonew|force' => \$force,
+    'help|?'      => \$help
  );
 
 pod2usage(1) if ( $help || !$ARGV[0] );
 
-my $helper =
-    Catalyst::Helper->new( { '.newfiles' => !$force, short => $short } );
+my $helper = Catalyst::Helper->new( { '.newfiles' => !$force } );
 
 pod2usage(1) unless $helper->mk_component( '[% name %]', @ARGV );
 
@@ -964,7 +917,6 @@ pod2usage(1) unless $helper->mk_component( '[% name %]', @ARGV );
  Options:
    -force    don't create a .new file where a file to be created exists
    -help     display this help and exits
-   -short    use short types, like C instead of Controller...
 
  Examples:
    [% appprefix %]_create.pl controller My::Controller
@@ -999,86 +951,6 @@ This library is free software, you can redistribute it and/or modify
 it under the same terms as Perl itself.
 
 =cut
-__package__
-[% startperl %]
-
-use strict;
-use Getopt::Long;
-use Pod::Usage;
-use Catalyst::PAR;
-
-my $core      = 0;
-my $classes   = '';
-my $engine    = 'CGI';
-my $help      = 0;
-my $multiarch = 0;
-my $output    = '[% appprefix %].par';
-
-GetOptions(
-    'classes=s' => \$classes,
-    'core'      => \$core,
-    'engine=s'  => \$engine,
-    'help|?'    => \$help,
-    'multiarch' => \$multiarch,
-    'output=s'  => \$output
-);
-
-pod2usage(1) if $help;
-
-Catalyst::PAR->new->package( {
-    classes   => $classes,
-    core      => $core,
-    engine    => $engine,
-    multiarch => $multiarch,
-    output    => $output,
-    class     => '[% name %]'
-} );
-
-1;
-
-=head1 NAME
-
-[% appprefix %]_package.pl - Package Catalyst Applications
-
-=head1 SYNOPSIS
-
-[% appprefix %]_package.pl
-
- Options:
-   -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)
-   -output       name for the par archive (defaults to [% appprefix %].par)
-
- Examples:
-   [% appprefix %]_package.pl -engine FastCGI
-   [% appprefix %]_package.pl -o foo_linux_i386_apache2.par -engine Apache2
-   [% appprefix %]_package.pl -classes Test::More,Foo::Bar -o foo.par
-
- See also:
-   perldoc Catalyst::Manual
-   perldoc Catalyst::Manual::Intro
-   perldoc pp
-
-=head1 DESCRIPTION
-
-Package Catalyst Applications with L<PAR>.
-
-=head1 AUTHOR
-
-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
 __compclass__
 package [% class %];
 
@@ -1100,12 +972,12 @@ Catalyst [% long_type %].
 [% IF long_type == 'Controller' %]
 =head1 METHODS
 
-=over 4
+=cut
 
 #
 # Uncomment and modify this or add new actions to fit your needs
 #
-#=item default
+#=head2 default
 #
 #=cut
 #
@@ -1116,8 +988,6 @@ Catalyst [% long_type %].
 #    $c->response->body('[% class %] is on Catalyst!');
 #}
 
-=back
-
 [% END %]
 =head1 AUTHOR