1 package Catalyst::Helper::ComponentGen;
3 use namespace::autoclean;
4 extends { 'Catalyst::Helper' };
7 $self->{test_dir} = File::Spec->catdir( $FindBin::Bin, '..', 't' );
8 $self->{test} = $self->next_test;
12 my $comp = $self->{long_type};
13 my $class = "Catalyst::Helper::$comp\::$helper";
14 eval "require $class";
17 Catalyst::Exception->throw(
18 message => qq/Couldn't load helper "$class", "$@"/ );
22 if ( $class->can('mk_compclass') ) {
23 return 1 unless $class->mk_compclass( $self, @args );
25 else { return 1 unless $self->_mk_compclass }
27 if ( $class->can('mk_comptest') ) {
28 $class->mk_comptest( $self, @args );
30 else { $self->_mk_comptest }
37 $self->{author} = $self->{author} = $ENV{'AUTHOR'}
38 || eval { @{ [ getpwuid($<) ] }[6] }
40 $self->{base} ||= File::Spec->catdir( $FindBin::Bin, '..' );
41 unless ( $_[0] =~ /^(?:model|view|controller)$/i ) {
44 my $class = "Catalyst::Helper::$helper";
45 eval "require $class";
48 Catalyst::Exception->throw(
49 message => qq/Couldn't load helper "$class", "$@"/ );
52 if ( $class->can('mk_stuff') ) {
53 return 1 unless $class->mk_stuff( $self, @args );
58 my $name = shift || "Missing name for model/view/controller";
61 return 0 if $name =~ /[^\w\:]/;
63 $self->{long_type} = ucfirst $type;
64 $type = 'M' if $type =~ /model/i;
65 $type = 'V' if $type =~ /view/i;
66 $type = 'C' if $type =~ /controller/i;
67 my $appdir = File::Spec->catdir( split /\:\:/, $app );
69 File::Spec->catdir( $FindBin::Bin, '..', 'lib', $appdir, 'C' );
70 $type = $self->{long_type} unless -d $test_path;
71 $self->{type} = $type;
72 $self->{name} = $name;
73 $self->{class} = "$app\::$type\::$name";
77 File::Spec->catdir( $FindBin::Bin, '..', 'lib', $appdir, $type );
79 if ( $name =~ /\:/ ) {
80 my @path = split /\:\:/, $name;
82 $path = File::Spec->catdir( $path, @path );
85 $file = File::Spec->catfile( $path, "$file.pm" );
86 $self->{file} = $file;
90 return 1 unless $self->_mk_compclass;