diff options
-rw-r--r-- | lib/App/ArchLinux/PackagerTools/CPAN.pm | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/App/ArchLinux/PackagerTools/CPAN.pm b/lib/App/ArchLinux/PackagerTools/CPAN.pm index 50306c9..e549408 100644 --- a/lib/App/ArchLinux/PackagerTools/CPAN.pm +++ b/lib/App/ArchLinux/PackagerTools/CPAN.pm @@ -132,12 +132,21 @@ Set up the internal index of CPAN distributions =cut method _build_dist_index() { - # TODO download pacakges list ourselves instead of using cpanplus for it? We may need cpanplus for other features later so keeping it is probably also fine. $log->debug("Fetching CPAN modules index"); my $out; - run [qw(curl -s ), "https://cpan.metacpan.org/modules/02packages.details.txt.gz"], '|', ['zcat'], \$out or die $log->error("Failed to fetch and uncompress CPAN module index: $?")."\n"; - #my $packages_file = "$ENV{HOME}/.cpanplus/02packages.details.txt.gz"; - #open my $out, '-|', 'zcat', $packages_file; + my $use_cpanplus_index = 1; + # TODO put this in a dedicated module for testing + if ($use_cpanplus_index) { + # This is mostly for development so we don't go over the network on each run. + my $packages_file = "$ENV{HOME}/.cpanplus/02packages.details.txt.gz"; + run ['zcat', $packages_file], \undef, \$out or die $log->error("Failed to fetch and uncompress CPAN module index: $?")."\n"; + } else { + # TODO cache the details file locally + # TODO when we have a cache of this, remove the $use_cpanplus_index part since that is worse than having our own cache + # TODO make the cpan mirror configurable + run [qw(curl -s ), "https://cpan.metacpan.org/modules/02packages.details.txt.gz"], '|', ['zcat'], \$out or die $log->error("Failed to fetch and uncompress CPAN module index: $?")."\n"; + } + my %seen; my $line_number = 0; $log->debug("Building index..."); |