From eadb3eaadd71df2b0776da7b5d5c5ff27067ceeb Mon Sep 17 00:00:00 2001 From: Ryan Voots Date: Sun, 26 Mar 2017 23:36:12 -0700 Subject: [PATCH] Makes the proper tree, needs to be traversed and run via cpanm to test each case --- test.pl | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/test.pl b/test.pl index f663f2c..7de15ab 100644 --- a/test.pl +++ b/test.pl @@ -3,12 +3,13 @@ use 5.22.0; package Module; use Moose; +use Module::CoreList; has 'name' => (is => 'ro'); has 'version' => (is => 'ro'); has 'depends' => ( - default => sub {my $self=shift; get_deps($self->name)}, + builder => 'get_deps', is => 'ro', isa => 'ArrayRef[Module]', lazy => 1, @@ -27,14 +28,26 @@ sub new_module { $cache{$name} = Module->new(name => $name); } -sub get_deps { +sub _is_core { my $module = shift; + chomp $module; + my ($name, $version) = split (/[\-~]/, $module); - return [] if $module eq 'perl'; + my $ret = ($name eq 'perl' || Module::CoreList->first_release($name)) // 0; + + return $ret; +} + +sub get_deps { + my $self=shift; + my $module = $self->name; + + # skip perl, or core modules + return [] if _is_core($module); open(my $ph, "-|", qw/cpanm --quiet --showdeps/, $module); - return [map {Module->new_module($_)} <$ph>]; + return [map {Module->new_module($_)} grep {!_is_core($_)} <$ph>]; } sub print_deps { @@ -54,3 +67,4 @@ use Data::Dumper; my $foo = Module->new_module('Moose'); $foo->print_deps(0, []); +