App-cpanminus-script-Patch-UseURIFromFoundMirror

 view release on metacpan or  search on metacpan

lib/App/cpanminus/script/Patch/UseURIFromFoundMirror.pm  view on Meta::CPAN

package App::cpanminus::script::Patch::UseURIFromFoundMirror;

our $DATE = '2017-07-14'; # DATE
our $VERSION = '0.001'; # VERSION

use 5.010001;
use strict;
no warnings;

use Module::Patch 0.12 qw();
use base qw(Module::Patch);

my $_search_module = sub {
    my($self, $module, $version) = @_;
    if ($self->{mirror_index}) {
        $self->mask_output( chat => "Searching $module on mirror index $self->{mirror_index} ...\n" );
        my $pkg = $self->search_mirror_index_file($self->{mirror_index}, $module, $version);
        return $pkg if $pkg;
        unless ($self->{cascade_search}) {
            $self->mask_output( diag_fail => "Finding $module ($version) on mirror index $self->{mirror_index} failed." );
            return;
        }
    }
    unless ($self->{mirror_only}) {
        my $found = $self->search_database($module, $version);
        return $found if $found;
    }
  MIRROR: for my $mirror (@{ $self->{mirrors} }) {
        $self->mask_output( chat => "Searching $module on mirror $mirror ...\n" );
        my $name = '02packages.details.txt.gz';
        my $uri  = "$mirror/modules/$name";
        my $gz_file = $self->package_index_for($mirror) . '.gz';
        unless ($self->{pkgs}{$uri}) {
            $self->mask_output( chat => "Downloading index file $uri ...\n" );
            $self->mirror($uri, $gz_file);
            $self->generate_mirror_index($mirror) or next MIRROR;
            $self->{pkgs}{$uri} = "!!retrieved!!";
        }
        {
            # only use URI from the found mirror
            local $self->{mirrors} = [$mirror];
            my $pkg = $self->search_mirror_index($mirror, $module, $version);
            return $pkg if $pkg;
        }
        $self->mask_output( diag_fail => "Finding $module ($version) on mirror $mirror failed." );
    }
    return;
};

sub patch_data {
    return {
        v => 3,
        patches => [
            {
                action      => 'replace',
                sub_name    => 'search_module',
                code        => $_search_module,
            },
        ],
   };
}

1;
# ABSTRACT: Only use URI from mirror where we found the module

__END__

=pod

=encoding UTF-8

=head1 NAME

App::cpanminus::script::Patch::UseURIFromFoundMirror - Only use URI from mirror where we found the module

=head1 VERSION

This document describes version 0.001 of App::cpanminus::script::Patch::UseURIFromFoundMirror (from Perl distribution App-cpanminus-script-Patch-UseURIFromFoundMirror), released on 2017-07-14.



( run in 2.512 seconds using v1.01-cache-2.11-cpan-98e64b0badf )