[carton] 206/472: Move the 02packages writer to Lock module
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 a718db33fee285d5161a81123f2761fe12c8e905
Author: Tatsuhiko Miyagawa <miyagawa at bulknews.net>
Date: Thu May 30 17:31:43 2013 +0900
Move the 02packages writer to Lock module
---
lib/Carton.pm | 47 +++++------------------------------------------
lib/Carton/CLI.pm | 4 ++--
lib/Carton/Lock.pm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 55 insertions(+), 44 deletions(-)
diff --git a/lib/Carton.pm b/lib/Carton.pm
index 9cb57a4..16e3b8b 100644
--- a/lib/Carton.pm
+++ b/lib/Carton.pm
@@ -61,9 +61,7 @@ sub bundle {
my($self, $cpanfile, $lock) = @_;
my @modules = $self->list_dependencies;
-
- my $index = $self->build_index($lock->{modules});
- $self->build_mirror_file($index, $self->{mirror_file});
+ $lock->write_mirror_index($self->{mirror_file});
my $mirror = $self->{mirror} || $DefaultMirror;
my $local_cache = $self->local_cache; # because $self->{path} is localized
@@ -86,8 +84,7 @@ sub install {
my @modules = $self->list_dependencies;
if ($lock) {
- my $index = $self->build_index($lock->{modules});
- $self->build_mirror_file($index, $self->{mirror_file});
+ $lock->write_mirror_index($self->{mirror_file});
}
my $mirror = $self->{mirror} || $DefaultMirror;
@@ -109,40 +106,6 @@ sub install {
) or die "Installing modules failed\n";
}
-sub build_mirror_file {
- my($self, $index, $file) = @_;
-
- my @packages = $self->build_packages($index);
-
- 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->[0], 32), pad($p->[1] || 'undef', 10, 1), $p->[2];
- }
-
- return $file;
-}
-
-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";
-}
-
sub build_packages {
my($self, $index) = @_;
@@ -156,11 +119,11 @@ sub build_packages {
}
sub build_index {
- my($self, $modules) = @_;
+ my($self, $lock) = @_;
my $index;
- while (my($name, $metadata) = each %$modules) {
+ while (my($name, $metadata) = each %{$lock->{modules}}) {
for my $mod (keys %{$metadata->{provides}}) {
$index->{$mod} = { %{$metadata->{provides}{$mod}}, meta => $metadata };
}
@@ -279,7 +242,7 @@ sub check_satisfies {
my($self, $lock, $deps) = @_;
my @unsatisfied;
- my $index = $self->build_index($lock->{modules});
+ my $index = $self->build_index($lock);
my %pool = %{$lock->{modules}}; # copy
my @root = map { [ split /~/, $_, 2 ] } @$deps;
diff --git a/lib/Carton/CLI.pm b/lib/Carton/CLI.pm
index 1fc95f6..d7b5200 100644
--- a/lib/Carton/CLI.pm
+++ b/lib/Carton/CLI.pm
@@ -196,7 +196,7 @@ sub cmd_show {
my $lock = $self->find_lock
or $self->error("Can't find carton.lock: Run `carton install`\n");
- my $index = $self->carton->build_index($lock->{modules});
+ my $index = $self->carton->build_index($lock);
for my $module (@args) {
my $meta = $index->{$module}{meta}
@@ -211,7 +211,7 @@ sub cmd_list {
my $lock = $self->find_lock
or $self->error("Can't find carton.lock: Run `carton install` to rebuild the lock file.\n");
- for my $module (values %{$lock->{modules} || {}}) {
+ for my $module ($lock->modules) {
$self->print("$module->{dist}\n");
}
}
diff --git a/lib/Carton/Lock.pm b/lib/Carton/Lock.pm
index 066d58a..2c2dd47 100644
--- a/lib/Carton/Lock.pm
+++ b/lib/Carton/Lock.pm
@@ -1,8 +1,56 @@
package Carton::Lock;
+use strict;
sub new {
my($class, $data) = @_;
bless $data, $class;
}
+sub modules {
+ values %{$_[0]->{modules} || {}};
+}
+
+sub write_mirror_index {
+ my($self, $file) = @_;
+
+ my $index;
+ while (my($name, $metadata) = each %{$self->{modules}}) {
+ for my $mod (keys %{$metadata->{provides}}) {
+ $index->{$mod} = { %{$metadata->{provides}{$mod}}, meta => $metadata };
+ }
+ }
+
+ my @packages;
+ for my $package (sort keys %$index) {
+ my $module = $index->{$package};
+ push @packages, [ $package, $module->{version}, $module->{meta}{pathname} ];
+ }
+
+ 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->[0], 32), pad($p->[1] || 'undef', 10, 1), $p->[2];
+ }
+}
+
+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";
+}
+
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