caches and now also generates a build order

This commit is contained in:
Ryan Voots 2017-03-27 19:05:48 -04:00
parent 38fddb4f15
commit 765ecf5208

30
test.pl
View file

@ -4,6 +4,7 @@ use 5.22.0;
package Module; package Module;
use Moose; use Moose;
use Module::CoreList; use Module::CoreList;
use Storable;
has 'name' => (is => 'ro'); has 'name' => (is => 'ro');
has 'version' => (is => 'ro'); has 'version' => (is => 'ro');
@ -16,6 +17,19 @@ has 'depends' => (
); );
our %cache; our %cache;
if (-e 'cache.stor') {
eval {
my $cache_href=retrieve('cache.stor');
%cache = $cache_href->%*;
};
if ($@) {
print STDERR "Couldn't load cache $@\n";
}
}
END {
store \%cache, 'cache.stor';
};
sub new_module { sub new_module {
my $class = shift; my $class = shift;
@ -64,7 +78,23 @@ use strict;
use autodie; use autodie;
use warnings; use warnings;
use Data::Dumper; use Data::Dumper;
use List::Util qw/uniq/;
sub dep_order {
my $module = shift;
my @orders;
for my $dep ($module->depends->@*) {
push @orders, dep_order($dep);
}
push @orders, $module;
return @orders;
}
my $foo = Module->new_module('Moose'); my $foo = Module->new_module('Moose');
$foo->print_deps(0, []); $foo->print_deps(0, []);
print Dumper([map {$_->name} uniq dep_order($foo)]);