Version 0.34
[catagits/Catalyst-Plugin-ConfigLoader.git] / lib / Catalyst / Plugin / ConfigLoader.pm
index 8fe0e71..753b76f 100644 (file)
@@ -8,7 +8,7 @@ use MRO::Compat;
 use Data::Visitor::Callback;
 use Catalyst::Utils ();
 
-our $VERSION = '0.24';
+our $VERSION = '0.34';
 
 =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<config()> section. 
+loaded, set the C<config()> 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<Catalyst>