From d7cd126cc8326f42713c20d2d95091156b44e58f Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Sun, 16 Dec 2018 23:27:20 +0100 Subject: CPAN: Build dist index lazily Signed-off-by: Florian Pritz --- lib/App/ArchLinux/PackagerTools/CPAN.pm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/App/ArchLinux/PackagerTools/CPAN.pm b/lib/App/ArchLinux/PackagerTools/CPAN.pm index 4efc4df..1e1c86c 100644 --- a/lib/App/ArchLinux/PackagerTools/CPAN.pm +++ b/lib/App/ArchLinux/PackagerTools/CPAN.pm @@ -48,7 +48,6 @@ method new_no_defaults($class: $deps = {}) { $self->{deps} = $deps; $self->{dist_lc_map} = {}; $self->{dists} = {}; - $self->_build_dist_index(); return $self; } @@ -89,6 +88,7 @@ method search_dist($name) { $name =~ s/::/-/g; $log->tracef("Searching for CPAN distribution matching '%s'", $name); + $self->_build_dist_index(); my $index_name = $self->{dist_lc_map}->{lc($name)}; if (defined $index_name) { return $self->{dists}->{$index_name}; @@ -114,6 +114,7 @@ method get_dist($dist_name) { $dist_name =~ s/::/-/g; $log->tracef("Getting CPAN data for distribution '%s'", $dist_name); + $self->_build_dist_index(); my $index_name = $self->{dist_lc_map}->{lc($dist_name)}; if (defined $index_name) { return $self->{dists}->{$index_name}; @@ -133,6 +134,8 @@ Set up the internal index of CPAN distributions =cut method _build_dist_index() { + return if (scalar(keys $self->{dists}->%*) > 0); + $log->debug("Fetching CPAN modules index"); my $out = $self->{deps}->{packages_details_fetcher}->get_packages_data();; my %seen; -- cgit v1.2.3-24-g4f1b