App-CPANIDX
view release on metacpan or search on metacpan
bin/cpanidx-gendb view on Meta::CPAN
#!perl
use strict;
use warnings;
use App::CPANIDX::Tables;
use DBI;
use URI;
use Config::Tiny;
use CPAN::DistnameInfo;
use Date::Parse qw[str2time];
use Parse::CPAN::MirroredBy;
use Module::CoreList::DBSchema;
use IO::Zlib;
use File::Fetch;
use File::Spec;
use File::Path qw[mkpath];
use File::Spec::Unix;
use Getopt::Long;
my $verbose;
my $config = 'cpanidx.ini';
my $mirror_fields = [qw(
dst_bandwidth
dst_contact
dst_ftp
dst_http
dst_location
dst_notes
dst_organisation
dst_rsync
dst_src
dst_timezone
frequency
hostname
)];
GetOptions( 'config=s', \$config, 'verbose', \$verbose );
my $ini = Config::Tiny->new();
my $dsn;
my $user;
my $pass;
my $url;
my $corelist;
my $mirrorlist;
my $cpanperms;
my $mirror = 'ftp://ftp.funet.fi/pub/CPAN/';
my $cfg = $ini->read( $config ) or warn $ini->errstr, "\n";
if ( $cfg ) {
$dsn = $cfg->{_}->{dsn};
$user = $cfg->{_}->{user};
$pass = $cfg->{_}->{pass};
$url = $cfg->{_}->{url};
$corelist = $cfg->{_}->{skipcore};
$mirrorlist = $cfg->{_}->{skipmirrors};
$cpanperms = $cfg->{_}->{skipperms};
$mirror = $cfg->{_}->{mirror} || 'ftp://ftp.funet.fi/pub/CPAN/';
}
unless ( $dsn ) {
$dsn = 'dbi:SQLite:dbname=cpanidx.db';
warn "Using '$dsn'\n";
}
$|=1;
my $packages_file = '02packages.details.txt.gz';
my $mailrc_file = '01mailrc.txt.gz';
my $perms_file = '06perms.txt.gz';
my $mirrord_file = 'MIRRORED.BY';
my $idxdir = _cpanidx_dir();
mkpath( $idxdir ) unless -d $idxdir;
( run in 1.037 second using v1.01-cache-2.11-cpan-64ef6c95b5d )