Thread: [Module-build-checkins] [svn:Module-Build] r5903 - in Module-Build/trunk: . lib/Module lib/Module/Bu
Status: Beta
Brought to you by:
kwilliams
From: <ra...@cv...> - 2006-04-14 08:26:54
|
Author: randys Date: Fri Apr 14 01:26:02 2006 New Revision: 5903 Modified: Module-Build/trunk/Changes Module-Build/trunk/lib/Module/Build.pm Module-Build/trunk/lib/Module/Build/Base.pm Log: Look for .modulebuildrc in all home-like directories, returning the first one. Modified: Module-Build/trunk/Changes ============================================================================== --- Module-Build/trunk/Changes (original) +++ Module-Build/trunk/Changes Fri Apr 14 01:26:02 2006 @@ -2,6 +2,11 @@ 0.27_11 + - When searching for '.modulebuildrc', return the first HOME-like + directory that actually contains the file instead of the first + existing directory. Document the search locations and the order + searched. [Spotted by David Golden] + - We should not emit a warning if a Module::Build subclass is required in a Makefile.PL that is not bundled in the current distribution; it may be installed on the user's system. [Spotted by Modified: Module-Build/trunk/lib/Module/Build.pm ============================================================================== --- Module-Build/trunk/lib/Module/Build.pm (original) +++ Module-Build/trunk/lib/Module/Build.pm Fri Apr 14 01:26:02 2006 @@ -651,8 +651,11 @@ [version 0.28] -When Module::Build starts up, it will look for a file, -F<$ENV{HOME}/.modulebuildrc>. If the file exists, the options +When Module::Build starts up, it will look first for a file, +F<$ENV{HOME}/.modulebuildrc>. If it's not found there, it will look +in the the F<.modulebuildrc> file in the directories referred to by +the environment variables C<HOMEDRIVE> + C<HOMEDIR>, C<USERPROFILE>, +C<APPDATA>, C<WINDIR>, C<SYS$LOGIN>. If the file exists, the options specified there will be used as defaults, as if they were typed on the command line. The defaults can be overridden by specifying new values on the command line. Modified: Module-Build/trunk/lib/Module/Build/Base.pm ============================================================================== --- Module-Build/trunk/lib/Module/Build/Base.pm (original) +++ Module-Build/trunk/lib/Module/Build/Base.pm Fri Apr 14 01:26:02 2006 @@ -1676,15 +1676,30 @@ return %new_opts; } -# Look for a home directory on various systems. CPANPLUS does something like this. +# Look for a home directory on various systems. sub _home_dir { - my @os_home_envs = qw( APPDATA HOME USERPROFILE WINDIR SYS$LOGIN ); - - foreach ( @os_home_envs ) { - return $ENV{$_} if exists $ENV{$_} && defined $ENV{$_} && length $ENV{$_} && -d $ENV{$_}; + my @home_dirs; + push( @home_dirs, $ENV{HOME} ) if $ENV{HOME}; + + push( @home_dirs, File::Spec->catpath($ENV{HOMEDRIVE}, $ENV{HOMEPATH}, '') ) + if $ENV{HOMEDRIVE} && $ENV{HOMEPATH}; + + my @other_home_envs = qw( USERPROFILE APPDATA WINDIR SYS$LOGIN ); + push( @home_dirs, map $ENV{$_}, grep $ENV{$_}, @other_home_envs ); + + my @real_home_dirs = grep -d, @home_dirs; + + return wantarray ? @real_home_dirs : shift( @real_home_dirs ); +} + +sub _find_user_config { + my $self = shift; + my $file = shift; + foreach my $dir ( $self->_home_dir ) { + my $path = File::Spec->catfile( $dir, $file ); + return $path if -e $path; } - - return; + return undef; } # read ~/.modulebuildrc returning global options '*' and @@ -1705,10 +1720,8 @@ "No options loaded\n"); return (); } else { - my $home = $self->_home_dir; - return () unless defined $home; - $modulebuildrc = File::Spec->catfile( $home, '.modulebuildrc' ); - return () unless -e $modulebuildrc; + $modulebuildrc = $self->_find_user_config( '.modulebuildrc' ); + return () unless $modulebuildrc; } my $fh = IO::File->new( $modulebuildrc ) |