CPAN-Mini-FromList

 view release on metacpan or  search on metacpan

lib/CPAN/Mini/FromList.pm  view on Meta::CPAN

package CPAN::Mini::FromList;

use warnings;
use strict;

our $VERSION = '0.05';
# ABSTRACT: create a minimal CPAN mirror from a list of modules you specify

use CPAN::Mini;
use Data::Dumper;
use File::Spec::Functions;
use base qw(CPAN::Mini);




our %dists = ();

sub update_mirror {
    my $self = shift;
    my @args = @_;
    my %args=@args;
    
    foreach my $d (@{$args{list}}) {
        $dists{$d} = 1;        
    }

    CPAN::Mini->update_mirror(@args, 'module_filters', [\&_fromlist_filter]);
}

sub _fromlist_filter {
   my $module = shift;
   return 1 if ! $dists{$module};
   return 0;
}


sub delete_02packages {
    my ($class,$local)=@_;
    my $packages02=catfile($local,qw(modules 02packages.details.txt.gz));
    if (-e $packages02) {
        unlink ($packages02) || die "Cannot unlink $packages02: $!";
    }
}


sub generate_fake_02packages {
    my ($class,$local)=@_;
    eval {
        my $packages=catfile($local,qw(modules 02packages.details.txt));
        my @files=File::Find::Rule->file()->name('*.gz')->relative->in(
            catdir($local,qw(authors id)));    
        open(my $fh,'>',$packages) || die "Cannot write to $packages: $!";
        my $linecnt=@files;
        my $now=scalar localtime;
        print $fh <<"EOHEAD";
File:         02packages.details.txt
URL:          http://www.perl.com/CPAN/modules/02packages.details.txt
Description:  Fake 02packges generate by CPAN::Mini::FromList
Columns:      package name, version, path
Intended-For: Automated fetch routines, namespace documentation.
Written-By:   CPAN::Mini::FromList 
Line-Count:   $linecnt
Last-Updated: $now

EOHEAD
        foreach (@files) {
            print $fh "Fake                   undef    $_\n";
        }
        close $fh;
        $class->delete_02packages($local);
        system('gzip',$packages);
    };
    print $@ if $@;
}


q{  listening to:
    CPAN discussions at the Oslo QA Hackathon    



( run in 1.984 second using v1.01-cache-2.11-cpan-13bb782fe5a )