use File::ShareDir qw/dist_dir/;
use namespace::autoclean;
+with 'MooseX::Emulate::Class::Accessor::Fast';
+
+# Change Catalyst/Devel.pm also
+our $VERSION = '1.23';
+
my %cache;
=head1 NAME
sub get_sharedir_file {
my ($self, @filename) = @_;
- my $dist_dir;
+
+ my @try_dirs;
+ if (exists $self->{base}) {
+ push @try_dirs, $self->{base};
+ }
+ if (exists $ENV{CATALYST_DEVEL_SHAREDIR}) {
+ push @try_dirs, $ENV{CATALYST_DEVEL_SHAREDIR}
+ }
if (-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';
+ push @try_dirs, 'share';
}
else {
- $dist_dir = dist_dir('Catalyst-Devel');
+ push @try_dirs, dist_dir('Catalyst-Devel');
+ }
+
+ my $file;
+ foreach my $dist_dir (@try_dirs) {
+ $file = file( $dist_dir, @filename);
+ last if -r $file;
}
- my $file = file( $dist_dir, @filename);
Carp::confess("Cannot find $file") unless -r $file;
my $contents = $file->slurp;
return $contents;
message => qq/Couldn't load helper "$class", "$@"/ );
}
- ## must be left for back compat! ###################################
if ( $class->can('mk_compclass') ) {
return 1 unless $class->mk_compclass( $self, @args );
}
- else { return 1 unless $self->_mk_compclass }
+ else {
+ return 1 unless $self->_mk_compclass
+ }
if ( $class->can('mk_comptest') ) {
$class->mk_comptest( $self, @args );
}
- else { $self->_mk_comptest }
- ####################################################################
+ else {
+ $self->_mk_comptest
+ }
}
# Fallback