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

Reply via email to