X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FHelper.pm;h=3b182addbd27ea23c284bb39ae572ba9b66a9b1c;hb=1a50c493813f72e440cf1975d41f4080f411a547;hp=6a6e09b6f7385044bf30ee5d92952416c26fe1bd;hpb=b4b7c20623c95fbd6bc61219e2056db171c30e8c;p=catagits%2FCatalyst-Devel.git diff --git a/lib/Catalyst/Helper.pm b/lib/Catalyst/Helper.pm index 6a6e09b..3b182ad 100644 --- a/lib/Catalyst/Helper.pm +++ b/lib/Catalyst/Helper.pm @@ -1,6 +1,5 @@ package Catalyst::Helper; use Moose; -use Moose::Util::TypeConstraints; use Config; use File::Spec; use File::Spec::Unix; @@ -16,6 +15,11 @@ use Path::Class qw/dir file/; use File::ShareDir qw/dist_dir/; use namespace::autoclean; +with 'MooseX::Emulate::Class::Accessor::Fast'; + +# Change Catalyst/Devel.pm also +our $VERSION = '1.28'; + my %cache; =head1 NAME @@ -31,7 +35,10 @@ Catalyst::Helper - Bootstrap a Catalyst application sub get_sharedir_file { my ($self, @filename) = @_; my $dist_dir; - if (-d "inc/.author" && -f "lib/Catalyst/Helper.pm" + if (exists $ENV{CATALYST_DEVEL_SHAREDIR}) { + $dist_dir = $ENV{CATALYST_DEVEL_SHAREDIR}; + } + elsif (-d "inc/.author" && -f "lib/Catalyst/Helper.pm" ) { # Can't use sharedir if we're in a checkout # this feels horrible, better ideas? $dist_dir = 'share'; @@ -64,30 +71,26 @@ sub get_file { return 0; } -my $appname = subtype 'Str', - where { /[^\w:]/ or /^\d/ or /\b:\b|:{3,}/ }, - message { "Error: Invalid application name." }; - -has name => ( is => 'ro', isa => $appname, required => 1 ); - -foreach my $name (qw/ dir script appprefix appenv author /) { - has $name => ( is => 'ro', isa => 'Str', init_arg => undef, lazy => 1, builder => "_build_$name" ); -} - -sub _build_dir { my $dir = shift->name; $dir =~ s/\:\:/-/g; return $dir; } -sub _build_script { dir( shift->dir, 'script' ) } -sub _build_appprefix { Catalyst::Utils::appprefix(shift->name) } -sub _build_appenv { Catalyst::Utils::appenv(shift->name) } sub mk_app { - my ( $self ) = @_; + my ( $self, $name ) = @_; # Needs to be here for PAR require Catalyst; + if ( $name =~ /[^\w:]/ || $name =~ /^\d/ || $name =~ /\b:\b|:{3,}/) { + warn "Error: Invalid application name.\n"; + return 0; + } + $self->{name } = $name; + $self->{dir } = $name; + $self->{dir } =~ s/\:\:/-/g; + $self->{script } = dir( $self->{dir}, 'script' ); + $self->{appprefix } = Catalyst::Utils::appprefix($name); + $self->{appenv } = Catalyst::Utils::class2env($name); $self->{startperl } = -r '/usr/bin/env' ? '#!/usr/bin/env perl' - : "#!$Config{perlpath} -w"; + : "#!$Config{perlpath}"; $self->{scriptgen } = $Catalyst::Devel::CATALYST_SCRIPT_GEN; $self->{catalyst_version} = $Catalyst::VERSION; $self->{author } = $self->{author} = $ENV{'AUTHOR'} @@ -328,15 +331,25 @@ sub _mk_dirs { $self->{mod} = dir( $self->{lib}, $self->{class} ); $self->mk_dir( $self->{mod} ); - $self->{m} = dir( $self->{mod}, 'Model' ); - $self->mk_dir( $self->{m} ); - $self->{v} = dir( $self->{mod}, 'View' ); - $self->mk_dir( $self->{v} ); - $self->{c} = dir( $self->{mod}, 'Controller' ); - $self->mk_dir( $self->{c} ); - + if ( $self->{short} ) { + $self->{m} = dir( $self->{mod}, 'M' ); + $self->mk_dir( $self->{m} ); + $self->{v} = dir( $self->{mod}, 'V' ); + $self->mk_dir( $self->{v} ); + $self->{c} = dir( $self->{mod}, 'C' ); + $self->mk_dir( $self->{c} ); + } + else { + $self->{m} = dir( $self->{mod}, 'Model' ); + $self->mk_dir( $self->{m} ); + $self->{v} = dir( $self->{mod}, 'View' ); + $self->mk_dir( $self->{v} ); + $self->{c} = dir( $self->{mod}, 'Controller' ); + $self->mk_dir( $self->{c} ); + } my $name = $self->{name}; - $self->{rootname} = "$name\::Controller::Root"; + $self->{rootname} = + $self->{short} ? "$name\::C::Root" : "$name\::Controller::Root"; $self->{base} = dir( $self->{dir} )->absolute; }