| 45 | | croak "You might want to configure CPAN first." |
| 46 | | unless $CPAN::Config && ref $CPAN::Config eq 'HASH'; |
| 47 | | |
| 48 | | my $source_dir = $CPAN::Config->{keep_source_where}; |
| 49 | | my $file = _catfile( $source_dir, '/', $dir, '/', $basename ); |
| 50 | | unless ( -f $file ) { |
| 51 | | require URI::file; |
| 52 | | foreach my $url ( @{ $CPAN::Config->{urllist} || [] } ) { |
| 53 | | next unless $url =~ s{^file://}{/}; |
| 54 | | $file = URI::file->new(join '/', $url, $dir, $basename )->file; |
| 55 | | last if -f $file; |
| | 48 | if ( $CPAN::Config && ref $CPAN::Config eq 'HASH' ) { |
| | 49 | my $source_dir = $CPAN::Config->{keep_source_where}; |
| | 50 | $file = _catfile( $source_dir, $dir, $basename ); |
| | 51 | unless ( -f $file ) { |
| | 52 | require URI::file; |
| | 53 | foreach my $url ( @{ $CPAN::Config->{urllist} || [] } ) { |
| | 54 | next unless $url =~ s{^file://}{/}; |
| | 55 | $file = URI::file->new(join '/', $url, $dir, $basename )->file; |
| | 56 | last if -f $file; |
| | 57 | } |
| | 58 | } |
| | 59 | unless ( -f $file ) { |
| | 60 | $file = _catfile( $source_dir, $dir, "$basename.bak" ); |
| | 61 | } |
| | 62 | unless ( -f $file ) { |
| | 63 | $file = _catfile( $source_dir, $basename ); |
| 58 | | unless ( -f $file ) { |
| 59 | | $file = _catfile( $source_dir, '/', $dir, '/', "$basename.bak" ); |
| | 66 | |
| | 67 | # see if CPANPLUS is configured |
| | 68 | eval { require CPANPLUS::Configure }; |
| | 69 | unless ($@) { |
| | 70 | # XXX: should also support custom-sources directory? |
| | 71 | my $source_dir = CPANPLUS::Configure->new->get_conf('base'); |
| | 72 | my $cpanplus_file = _catfile( $source_dir, $basename ); |
| | 73 | if ( -f $cpanplus_file ) { |
| | 74 | $file ||= $cpanplus_file; |
| | 75 | if ( (stat($file))[9] < (stat($cpanplus_file))[9] ) { |
| | 76 | $file = $cpanplus_file; |
| | 77 | } |
| | 78 | } |