This is an automated email from the git hooks/post-receive script. kanashiro-guest pushed a commit to branch master in repository carton.
commit 1a269d5a9818f3b5a5ecd4d857ca8c2dde7a606d Author: Tatsuhiko Miyagawa <miyag...@bulknews.net> Date: Thu May 30 17:56:49 2013 +0900 move index logic to Index object --- lib/Carton.pm | 4 ++-- lib/Carton/{Lock.pm => Index.pm} | 40 +++++++++++++++++---------------------- lib/Carton/Lock.pm | 41 ++++++++++++++-------------------------- 3 files changed, 33 insertions(+), 52 deletions(-) diff --git a/lib/Carton.pm b/lib/Carton.pm index f54f641..b91cef1 100644 --- a/lib/Carton.pm +++ b/lib/Carton.pm @@ -61,7 +61,7 @@ sub bundle { my($self, $cpanfile, $lock) = @_; my @modules = $self->list_dependencies; - $lock->write_mirror_index($self->{mirror_file}); + $lock->write_index($self->{mirror_file}); my $mirror = $self->{mirror} || $DefaultMirror; my $local_cache = $self->local_cache; # because $self->{path} is localized @@ -84,7 +84,7 @@ sub install { my @modules = $self->list_dependencies; if ($lock) { - $lock->write_mirror_index($self->{mirror_file}); + $lock->write_index($self->{mirror_file}); } my $mirror = $self->{mirror} || $DefaultMirror; diff --git a/lib/Carton/Lock.pm b/lib/Carton/Index.pm similarity index 52% copy from lib/Carton/Lock.pm copy to lib/Carton/Index.pm index cb4cb01..cbcd15b 100644 --- a/lib/Carton/Lock.pm +++ b/lib/Carton/Index.pm @@ -1,36 +1,29 @@ -package Carton::Lock; +package Carton::Index; use strict; -use Carton::Package; sub new { - my($class, $data) = @_; - bless $data, $class; + my($class, $packages) = @_; + bless { packages => {} }, $class; } -sub modules { - values %{$_[0]->{modules} || {}}; +sub add_package { + my($self, $package) = @_; + $self->{packages}{$package->name} ||= $package; } -sub packages { +sub count { my $self = shift; - - my @packages; - while (my($name, $metadata) = each %{$self->{modules}}) { - while (my($package, $provides) = each %{$metadata->{provides}}) { - # TODO what if duplicates? - push @packages, Carton::Package->new($package, $provides->{version}, $metadata->{pathname}); - } - } - - return @packages; + scalar keys %{$self->{packages}}; } -sub write_mirror_index { - my($self, $file) = @_; +sub packages { + my $self = shift; + sort { $a->name cmp $b->name } values %{$self->{packages}}; +} - my @packages = $self->packages; +sub write { + my($self, $fh) = @_; - open my $fh, ">", $file or die $!; print $fh <<EOF; File: 02packages.details.txt URL: http://www.perl.com/CPAN/modules/02packages.details.txt @@ -38,11 +31,11 @@ Description: Package names found in carton.lock Columns: package name, version, path Intended-For: Automated fetch routines, namespace documentation. Written-By: Carton $Carton::VERSION -Line-Count: @{[ scalar(@packages) ]} +Line-Count: @{[ $self->count ]} Last-Updated: @{[ scalar localtime ]} EOF - for my $p (@packages) { + for my $p ($self->packages) { print $fh sprintf "%s %s %s\n", pad($p->name, 32), pad($p->version || 'undef', 10, 1), $p->pathname; } } @@ -57,4 +50,5 @@ sub pad { return $left ? "$pad$str" : "$str$pad"; } + 1; diff --git a/lib/Carton/Lock.pm b/lib/Carton/Lock.pm index cb4cb01..318ad88 100644 --- a/lib/Carton/Lock.pm +++ b/lib/Carton/Lock.pm @@ -1,6 +1,7 @@ package Carton::Lock; use strict; use Carton::Package; +use Carton::Index; sub new { my($class, $data) = @_; @@ -11,6 +12,17 @@ sub modules { values %{$_[0]->{modules} || {}}; } +sub index { + my $self = shift; + + my $index = Carton::Index->new; + for my $package ($self->packages) { + $index->add_package($package); + } + + return $index; +} + sub packages { my $self = shift; @@ -25,36 +37,11 @@ sub packages { return @packages; } -sub write_mirror_index { +sub write_index { my($self, $file) = @_; - my @packages = $self->packages; - open my $fh, ">", $file or die $!; - print $fh <<EOF; -File: 02packages.details.txt -URL: http://www.perl.com/CPAN/modules/02packages.details.txt -Description: Package names found in carton.lock -Columns: package name, version, path -Intended-For: Automated fetch routines, namespace documentation. -Written-By: Carton $Carton::VERSION -Line-Count: @{[ scalar(@packages) ]} -Last-Updated: @{[ scalar localtime ]} - -EOF - for my $p (@packages) { - print $fh sprintf "%s %s %s\n", pad($p->name, 32), pad($p->version || 'undef', 10, 1), $p->pathname; - } -} - -sub pad { - my($str, $len, $left) = @_; - - my $howmany = $len - length($str); - return $str if $howmany <= 0; - - my $pad = " " x $howmany; - return $left ? "$pad$str" : "$str$pad"; + $self->index->write($fh); } 1; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/carton.git _______________________________________________ Pkg-perl-cvs-commits mailing list Pkg-perl-cvs-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-perl-cvs-commits