[carton] 210/472: move index logic to Index object
Lucas Kanashiro
kanashiro-guest at moszumanska.debian.org
Fri Jul 24 00:38:47 UTC 2015
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 <miyagawa at 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
More information about the Pkg-perl-cvs-commits
mailing list