Updated helper for Root class
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Helper.pm
index 9c83a9c..9e0e9ea 100644 (file)
@@ -82,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;
@@ -339,6 +341,15 @@ sub _mk_appclass {
     $self->render_file( 'appclass', "$mod.pm" );
 }
 
+sub _mk_rootclass {
+    my $self = shift;
+    my $c    = $self->{c};
+    my $name = $self->{name};
+    $self->{rootname} =
+      $self->{short} ? "$name\::C::Root" : "$name\::Controller::Root";
+    $self->render_file( 'rootclass', File::Spec->catfile( $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,18 +544,14 @@ 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
-#
-__PACKAGE__->config( name => '[% name %]' );
-
-#
 # Start the application
 #
 __PACKAGE__->setup;
@@ -553,6 +568,42 @@ __PACKAGE__->setup;
 
 Catalyst based application.
 
+=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';
+
+#
+# A empty namespace attaches this Controller to the root
+#
+__PACKAGE__->config->{namespace} = '';
+
+=head1 NAME
+
+[% rootname %] - Root Controller of this Catalyst based application
+
+=head1 SYNOPSIS
+
+See L<[% name %]>.
+
+=head1 DESCRIPTION
+
+Root Controller of this Catalyst based application.
+
 =head1 METHODS
 
 =cut
@@ -603,13 +654,16 @@ use inc::Module::Install;
 name '[% dir %]';
 all_from '[% path %]';
 
-requires Catalyst => '5.62';
+requires Catalyst => '5.64';
 
 catalyst;
 
 install_script glob('script/*.pl');
 auto_install;
 WriteAll;
+__config__
+---
+name: [% name %]
 __readme__
 Run script/[% appprefix %]_server.pl to test the application.
 __changes__
@@ -618,11 +672,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;
-BEGIN { 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";
@@ -631,6 +690,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";
@@ -1033,12 +1094,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 %]');