diff options
author | Tatsuhiko Miyagawa <miyagawa@bulknews.net> | 2013-06-03 23:57:08 +0900 |
---|---|---|
committer | Tatsuhiko Miyagawa <miyagawa@bulknews.net> | 2013-06-03 23:57:08 +0900 |
commit | eacd7dc8a4d80c3bfacfd0c5e7b15bbfac4d8788 (patch) | |
tree | 7db2f369759cd418283e6c692046aa69a2123f1d | |
parent | a3c34cb9b552a7114adee5bdd476f69e1116a812 (diff) | |
download | carton-eacd7dc8a4d80c3bfacfd0c5e7b15bbfac4d8788.tar.gz |
rewrite dumper code
-rw-r--r-- | lib/Carton/CLI.pm | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/lib/Carton/CLI.pm b/lib/Carton/CLI.pm index 2f4d671..10dfcd9 100644 --- a/lib/Carton/CLI.pm +++ b/lib/Carton/CLI.pm @@ -264,29 +264,33 @@ sub cmd_tree { my $cpanfile = Module::CPANfile->load($self->find_cpanfile); my $prereqs = $cpanfile->prereqs; - my $level = 0; - $self->dump_tree($lock, undef, $prereqs, $level); + my $dumper = $self->_make_dumper($lock); + $dumper->(undef, $prereqs, 0); } -sub dump_tree { - my($self, $lock, $name, $prereqs, $level) = @_; +sub _make_dumper { + my($self, $lock) = @_; - my $req = CPAN::Meta::Requirements->new; - $req->add_requirements($prereqs->requirements_for($_, 'requires')) - for qw( configure build runtime test); + my $dumper; $dumper = sub { + my($name, $prereqs, $level) = @_; - if ($name) { - $self->print( (" " x ($level - 1)) . "$name\n" ); - } + my $req = CPAN::Meta::Requirements->new; + $req->add_requirements($prereqs->requirements_for($_, 'requires')) + for qw( configure build runtime test); - my $requirements = $req->as_string_hash; - while (my($module, $version) = each %$requirements) { - if (my $dependency = $lock->find($module)) { - $self->dump_tree($lock, $dependency->dist, $dependency->prereqs, $level + 1); - } else { - # TODO: probably core, what if otherwise? + if ($name) { + $self->print( (" " x ($level - 1)) . "$name\n" ); } - } + + my $requirements = $req->as_string_hash; + while (my($module, $version) = each %$requirements) { + if (my $dependency = $lock->find($module)) { + $dumper->($dependency->dist, $dependency->prereqs, $level + 1); + } else { + # TODO: probably core, what if otherwise? + } + } + }; } sub cmd_check { |