X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FPlugin%2FConfigLoader.pm;h=826af2897a628ef7faf2b87579fa4101d1826a0f;hb=250adb2fe240f837f03131a5e62ced1ddc2b2f2b;hp=8fe0e71a8f7f49dcb4cecb6daa59803e493384c5;hpb=24e563f5b0bcdd4c8a4385dd03aaf69b09b75836;p=catagits%2FCatalyst-Plugin-ConfigLoader.git diff --git a/lib/Catalyst/Plugin/ConfigLoader.pm b/lib/Catalyst/Plugin/ConfigLoader.pm index 8fe0e71..826af28 100644 --- a/lib/Catalyst/Plugin/ConfigLoader.pm +++ b/lib/Catalyst/Plugin/ConfigLoader.pm @@ -8,7 +8,7 @@ use MRO::Compat; use Data::Visitor::Callback; use Catalyst::Utils (); -our $VERSION = '0.24'; +our $VERSION = '0.33'; =head1 NAME @@ -17,14 +17,14 @@ Catalyst::Plugin::ConfigLoader - Load config files of various types =head1 SYNOPSIS package MyApp; - + # ConfigLoader should be first in your list so # other plugins can get the config information use Catalyst qw( ConfigLoader ... ); - + # by default myapp.* will be loaded # you can specify a file if you'd like - __PACKAGE__->config( 'Plugin::ConfigLoader' => { file => 'config.yaml' } ); + __PACKAGE__->config( 'Plugin::ConfigLoader' => { file => 'config.yaml' } ); In the file, assuming it's in YAML format: @@ -63,7 +63,7 @@ for details on how this is configured. This method is automatically called by Catalyst's setup routine. It will attempt to use each plugin and, once a file has been successfully -loaded, set the C section. +loaded, set the C section. =cut @@ -179,11 +179,12 @@ sub get_config_path { my $appname = ref $c || $c; my $prefix = Catalyst::Utils::appprefix( $appname ); - my $path = Catalyst::Utils::env_value( $c, 'CONFIG' ) + my $path = Catalyst::Utils::env_value( $appname, 'CONFIG' ) || $c->config->{ 'Plugin::ConfigLoader' }->{ file } || $c->path_to( $prefix ); - my ( $extension ) = ( $path =~ m{\.(.{1,4})$} ); + ## don't look for extension if this is a dir + my ( $extension ) = !-d $path ? ( $path =~ m{\.([^\/\\.]{1,4})$} ) : () ; if ( -d $path ) { $path =~ s{[\/\\]$}{}; @@ -222,7 +223,7 @@ sub get_config_local_suffix { my $c = shift; my $appname = ref $c || $c; - my $suffix = Catalyst::Utils::env_value( $c, 'CONFIG_LOCAL_SUFFIX' ) + my $suffix = Catalyst::Utils::env_value( $appname, 'CONFIG_LOCAL_SUFFIX' ) || $c->config->{ 'Plugin::ConfigLoader' }->{ config_local_suffix } || 'local'; @@ -273,8 +274,8 @@ sub finalize_config { =head2 config_substitutions( $value ) -This method substitutes macros found with calls to a function. There are three -default macros: +This method substitutes macros found with calls to a function. There are a +number of default macros: =over 4 @@ -307,15 +308,15 @@ sub config_substitutions { my $subs = $c->config->{ 'Plugin::ConfigLoader' }->{ substitutions } || {}; $subs->{ HOME } ||= sub { shift->path_to( '' ); }; - $subs->{ ENV } ||= - sub { - my ( $c, $v ) = @_; + $subs->{ ENV } ||= + sub { + my ( $c, $v ) = @_; if (! defined($ENV{$v})) { Catalyst::Exception->throw( message => "Missing environment variable: $v" ); return ""; } else { - return $ENV{ $v }; + return $ENV{ $v }; } }; $subs->{ path_to } ||= sub { shift->path_to( @_ ); }; @@ -346,7 +347,7 @@ development of this module: =back -Work to this module has been generously sponsored by: +Work to this module has been generously sponsored by: =over 4 @@ -356,14 +357,14 @@ Work to this module has been generously sponsored by: =head1 COPYRIGHT AND LICENSE -Copyright 2006-2009 by Brian Cassidy +Copyright 2006-2010 by Brian Cassidy This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. +it under the same terms as Perl itself. =head1 SEE ALSO -=over 4 +=over 4 =item * L