From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1SKLdN-0007zK-Nm for garchives@archives.gentoo.org; Wed, 18 Apr 2012 03:32:46 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 2EAE2E0D8E; Wed, 18 Apr 2012 03:32:28 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 52D0BE0D8E for ; Wed, 18 Apr 2012 03:32:27 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 992021B401D for ; Wed, 18 Apr 2012 03:32:26 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 6360FE5403 for ; Wed, 18 Apr 2012 03:32:25 +0000 (UTC) From: "Kent Fredric" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Kent Fredric" Message-ID: <1334711988.871aaebc3151f4514244fae929f461fcde0dab1b.kent@gentoo> Subject: [gentoo-commits] proj/perl-overlay:master commit in: scripts/ X-VCS-Repository: proj/perl-overlay X-VCS-Files: scripts/aggregate_tree.pl X-VCS-Directories: scripts/ X-VCS-Committer: kent X-VCS-Committer-Name: Kent Fredric X-VCS-Revision: 871aaebc3151f4514244fae929f461fcde0dab1b X-VCS-Branch: master Date: Wed, 18 Apr 2012 03:32:25 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: 1d7bee09-4fd1-4d99-ad29-43c8c84cad31 X-Archives-Hash: e94c3213b6b9f9fac4bf49c70b595cca commit: 871aaebc3151f4514244fae929f461fcde0dab1b Author: Kent Fredric gmail com> AuthorDate: Wed Apr 18 01:19:48 2012 +0000 Commit: Kent Fredric gmail com> CommitDate: Wed Apr 18 01:19:48 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/perl-overlay.= git;a=3Dcommit;h=3D871aaebc [scripts/aggregate_tree.pl] Reorganise the data structure emitted, and em= it gentoo related data as individual tokens ( ie: cat/pkg/repo ), along w= ith exporting an array of found versions, allowing for one cpan-id to sim= ultaneously occur in multiple packages , or multiple categories, or multi= ple repositories, within the same dataset --- scripts/aggregate_tree.pl | 30 +++++++++++++++++++++++++----- 1 files changed, 25 insertions(+), 5 deletions(-) diff --git a/scripts/aggregate_tree.pl b/scripts/aggregate_tree.pl index c2e3c55..a719a26 100755 --- a/scripts/aggregate_tree.pl +++ b/scripts/aggregate_tree.pl @@ -34,11 +34,12 @@ if ( defined $opts->long_opts->{root} ) { } my $overlay =3D Gentoo::Overlay->new( path =3D> $root ); =20 +my $overlay_name =3D $overlay->name; use JSON; =20 my $data; =20 -my $packages =3D $data->{ $overlay->name } =3D {}; +my $packages =3D $data->{ $overlay_name } =3D {}; =20 my $encoder =3D JSON->new()->pretty->utf8->canonical; =20 @@ -52,7 +53,7 @@ else { $dest =3D $file->openw( iomode =3D> ':utf8' ); } =20 -my $cat;=20 +my $cat; $|++; $overlay->iterate( 'packages' =3D> sub { @@ -63,7 +64,7 @@ $overlay->iterate( warn "\e[31mNo metadata.xml for $CP\e[0m\n"; return; } - if( $c->{category_name} ne $cat ) { + if( not $cat or $c->{category_name} ne $cat ) { *STDERR->print("\nProcessing " . $c->{category_name} . " :"); $cat =3D $c->{category_name}; } @@ -93,7 +94,26 @@ $overlay->iterate( return; } my $upstream =3D $XML->{pkgmetadata}->{upstream}->{'remote-id'}->con= tent(); - $packages->{$upstream} =3D $CP; + if ( not defined $packages->{$upstream} ) { + $packages->{$upstream} =3D []; + } + my $versions =3D []; + my $record =3D { + category =3D> $c->{category_name}, + package =3D> $c->{package_name}, + repository =3D> $overlay_name, + versions_gentoo =3D> $versions, + }; + $c->{package}->iterate( ebuilds =3D> sub { + my ( $self, $d ) =3D @_; + my $version =3D $d->{ebuild_name}; + my $p =3D $c->{package_name}; + $version =3D~ s/\.ebuild$//; + $version =3D~ s/^\Q${p}\E-//; + push @{$versions}, $version; + }); + push @{ $packages->{$upstream} }, $record; + *STDERR->print("\e[32m $CP -> $upstream\e[0m "); } ); @@ -103,7 +123,7 @@ if ( not $opts->long_opts->{format} ) { $opts->long_opts->{format} =3D "JSON"; } if ( $opts->long_opts->{format} eq "JSON" ) { - $out =3D $encoder->encode($data); + $out =3D $encoder->encode($packages); } elsif ( $opts->long_opts->{format} eq 'distlist' ) { $out =3D join "\n", keys %{$packages};