Added JSAN support
[catagits/Catalyst-Runtime.git] / lib / Catalyst / Helper.pm
index 64dad70..ab6b11f 100644 (file)
@@ -9,6 +9,7 @@ use IO::File;
 use FindBin;
 use Template;
 use Catalyst;
+use Catalyst::Utils;
 use Catalyst::Exception;
 
 my %cache;
@@ -61,8 +62,7 @@ sub mk_app {
     $self->{name} = $name;
     $self->{dir}  = $name;
     $self->{dir} =~ s/\:\:/-/g;
-    $self->{appprefix} = lc $self->{dir};
-    $self->{appprefix} =~ s/-/_/g;
+    $self->{appprefix} = Catalyst::Utils::appprefix($name);
     $self->{startperl} = $Config{startperl};
     $self->{scriptgen} = $Catalyst::CATALYST_SCRIPT_GEN || 4;
     $self->{author}    = $self->{author} = $ENV{'AUTHOR'}
@@ -77,6 +77,7 @@ sub mk_app {
     $self->_mk_apptest;
     $self->_mk_cgi;
     $self->_mk_fastcgi;
+    $self->_mk_jsan;
     $self->_mk_server;
     $self->_mk_test;
     $self->_mk_create;
@@ -217,7 +218,7 @@ sub mk_file {
         $file .= '.new';
     }
     if ( my $f = IO::File->new("> $file") ) {
-        $f->binmode;
+        binmode $f;
         print $f $content;
         print qq/created "$file"\n/;
         return 1;
@@ -282,6 +283,8 @@ sub _mk_dirs {
     $self->mk_dir( $self->{static} );
     $self->{images} = File::Spec->catdir( $self->{static}, 'images' );
     $self->mk_dir( $self->{images} );
+    $self->{static} = File::Spec->catdir( $self->{static}, 'js' );
+    $self->mk_dir( $self->{static} );
     $self->{t} = File::Spec->catdir( $self->{dir}, 't' );
     $self->mk_dir( $self->{t} );
     $self->mk_dir( File::Spec->catdir( $self->{t}, 'M' ) );
@@ -354,6 +357,14 @@ sub _mk_fastcgi {
     chmod 0700, "$script/$appprefix\_fastcgi.pl";
 }
 
+sub _mk_jsan {
+    my $self      = shift;
+    my $script    = $self->{script};
+    my $appprefix = $self->{appprefix};
+    $self->render_file( 'jsan', "$script\/$appprefix\_jsan.pl" );
+    chmod 0700, "$script/$appprefix\_jsan.pl";
+}
+
 sub _mk_server {
     my $self      = shift;
     my $script    = $self->{script};
@@ -449,8 +460,8 @@ Sebastian Riedel, C<sri@oook.de>
 
 =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
 
@@ -461,6 +472,7 @@ __appclass__
 package [% name %];
 
 use strict;
+use warnings;
 
 # -Debug activates the debug mode for very useful log messages
 # Static::Simple will serve static files from the root directory
@@ -469,10 +481,10 @@ use Catalyst qw/-Debug Static::Simple/;
 our $VERSION = '0.01';
 
 # Configure the application
-[% name %]->config( name => '[% name %]' );
+__PACKAGE__->config( name => '[% name %]' );
 
 # Start the application
-[% name %]->setup;
+__PACKAGE__->setup;
 
 =head1 NAME
 
@@ -522,8 +534,8 @@ sub default : Private {
 
 =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
 
@@ -633,8 +645,8 @@ Sebastian Riedel, C<sri@oook.de>
 
 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
 __fastcgi__
@@ -671,8 +683,71 @@ Sebastian Riedel, C<sri@oook.de>
 
 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
+__jsan__
+[% startperl %] -w
+
+use strict;
+use Catalyst;
+use Catalyst::Utils;
+use File::Spec;
+use FindBin;
+use lib "$FindBin::Bin/../lib";
+
+# Needed for home detection
+{
+    no warnings 'all';
+    sub Catalyst::setup {}
+    require [% name %];
+}
+
+my $home = Catalyst::Utils::home('[% name %]');
+$ENV{JSAN_PREFIX} ||= File::Spec->catdir( $home, 'root', 'static', 'js' );
+
+# JSAN shell
+require JSAN;
+JSAN->control;
+
+1;
+
+=head1 NAME
+
+[% appprefix %]_jsan.pl - JSAN shell
+
+=head1 SYNOPSIS
+
+[% appprefix %]_jsan.pl [options]
+
+ Examples:
+   jsan> index
+   jsan> install Test.Simple
+
+ See also:
+   perldoc Catalyst::Manual
+   perldoc Catalyst::Manual::Intro
+
+
+=head1 DESCRIPTION
+
+Install JavaScript libraries from the JSAN shell.
+
+=head1 SEE ALSO
+
+http://openjsan.org
+
+=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
 __server__
@@ -759,8 +834,8 @@ Sebastian Riedel, C<sri@oook.de>
 
 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
 __test__
@@ -816,8 +891,8 @@ Sebastian Riedel, C<sri@oook.de>
 
 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
 __create__
@@ -882,14 +957,15 @@ Sebastian Riedel, C<sri\@oook.de>
 
 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
 __compclass__
 package [% class %];
 
 use strict;
+use warnings;
 use base 'Catalyst::Base';
 
 =head1 NAME
@@ -929,8 +1005,8 @@ Catalyst component.
 
 =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