preserve $self->{name} in mk_app if defined topic/helper-preserve-name mirror/topic/helper-preserve-name
Caleb Cushing [Tue, 13 Jul 2010 06:30:30 +0000 (02:30 -0400)]
previously you could create a new helper object with name already defined but
when you ran mk_app you had to pass a name parameter which would overwrite the
potentially already defined name. This patch allows you to do either, however
a name defined at the creation of a new helper object will take precedence.

Signed-off-by: Caleb Cushing <xenoterracide@gmail.com>

lib/Catalyst/Helper.pm
t/generated_app.t

index 000b5c0..8a638d9 100644 (file)
@@ -79,7 +79,9 @@ sub mk_app {
     # Needs to be here for PAR
     require Catalyst;
 
-    if($name eq '.') {
+    $self->{name} ||= $name;
+
+    if($self->{name} eq '.') {
         if(!-e 'META.yml') {
             system perl => 'Makefile.PL'
                 and Catalyst::Exception->throw(message => q(
@@ -87,26 +89,27 @@ sub mk_app {
                 ));
         }
 
-        $name = YAML::Tiny->read('META.yml')->[0]->{'name'};
-        $name =~ s/-/::/g;
+        $self->{name} = YAML::Tiny->read('META.yml')->[0]->{'name'};
+        $self->{name} =~ s/-/::/g;
         $self->{dir} = '.';
     }
 
-    if ( $name =~ /[^\w:]/ || $name =~ /^\d/ || $name =~ /\b:\b|:{3,}/) {
+    if (   $self->{name} =~ /[^\w:]/
+        || $self->{name} =~ /^\d/
+        || $self->{name} =~ /\b:\b|:{3,}/
+    ) {
         warn "Error: Invalid application name.\n";
         return 0;
     }
 
-
     if(!defined $self->{'dir'}) {
-        $self->{dir} = $name;
+        $self->{dir} = $self->{name};
         $self->{dir} =~ s/\:\:/-/g;
     }
 
-    $self->{name            } = $name;
     $self->{script          } = dir( $self->{dir}, 'script' );
-    $self->{appprefix       } = Catalyst::Utils::appprefix($name);
-    $self->{appenv          } = Catalyst::Utils::class2env($name);
+    $self->{appprefix       } = Catalyst::Utils::appprefix($self->{name});
+    $self->{appenv          } = Catalyst::Utils::class2env($self->{name});
     $self->{startperl       } = -r '/usr/bin/env'
                                 ? '#!/usr/bin/env perl'
                                 : "#!$Config{perlpath}";
index 6c7a66b..a923f69 100644 (file)
@@ -37,7 +37,7 @@ chdir $dir or die "Cannot chdir to $dir: $!";
         }
     );
 
-    $helper->mk_app('TestApp');
+    $helper->mk_app;
 }
 
 my $app_dir = File::Spec->catdir($dir, 'TestApp');