X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=samples%2Fgengentooisms;h=980ecbf7dcaf56b8b4418080ad5deb7a6e347853;hb=5b30d3775087ec80c860185b6fe18998629beacf;hp=fcd656a12aa5b52b18ac80783ae650fea7079a56;hpb=d77142c8216a27e216565391d32d2cf3f321f63c;p=perl%2Fmodules%2FCPANPLUS-Dist-Gentoo.git diff --git a/samples/gengentooisms b/samples/gengentooisms index fcd656a..980ecbf 100755 --- a/samples/gengentooisms +++ b/samples/gengentooisms @@ -85,8 +85,9 @@ sub parse_portage_tree { my $pkg_name = (File::Spec->splitdir($pkg_dir))[-1]; my $last = reduce { $a->[1] > $b->[1] ? $a : $b } - map [ $_, CPANPLUS::Dist::Gentoo::Atom->new_from_ebuild($_) ], - glob File::Spec->catfile($pkg_dir, "$pkg_name-*"); + grep $_->[1] != 9999, + map [ $_, CPANPLUS::Dist::Gentoo::Atom->new_from_ebuild($_) ], + glob File::Spec->catfile($pkg_dir, "$pkg_name-*"); my ($ebuild, $atom) = @$last; p(1, "%s/%s-%s\n", map $atom->$_, qw); @@ -111,10 +112,25 @@ sub parse_portage_tree { die "system(\"@cmd\") returned $ret and/or failed with status $code"; } - while ($err =~ /SRC_URI=((['"]).*?\2|\S+)/gs) { - $uri = $1; - $uri =~ s{^(['"])(.*?)\1$}{$2}s; + my %map; + while ($err =~ /([a-zA-Z0-9_]+)=((['"]).*?\3|\S+)/gs) { + my $key = $1; + my $val = $2; + $val =~ s{^(['"])(.*?)\1$}{$2}s; + $map{$key} = $val; } + + $uri = $map{SRC_URI}; + unless (defined $uri) { + my $author = $map{MODULE_AUTHOR}; + if (defined $author) { + my ($au, $a) = $author =~ /^((.).)/; + my $dist_version = $map{MODULE_VERSION}; + $dist_version = $last->[1] unless defined $dist_version; + $uri = "mirror://cpan/$a/$au/$author/$pkg_name/$dist_version.tar.gz"; + } + } + $fetched_uri{$ebuild} = $uri; Storable::store([ $timestamp,