Decision-Depends
view release on metacpan or search on metacpan
lib/Decision/Depends/List.pm view on Meta::CPAN
my ( $self, $obj ) = @_;
push @{$self->{list}}, $obj;
}
sub ndeps
{
@{shift->{list}};
}
sub depends
{
my ( $self, $targets ) = @_;
my %depends;
local $Carp::CarpLevel = $Carp::CarpLevel + 1;
for my $target ( @$targets )
{
print STDOUT " Target ", $target->file, "\n"
if $self->Verbose;
# keep track of changed dependencies
my %deps = ( time => [],
var => [],
sig => [] );
my $time = $target->getTime;
unless( defined $time )
{
print STDOUT " target `", $target->file,
"' doesn't exist\n" if $self->Verbose;
$depends{$target->file} = \%deps;
}
else
{
for my $dep ( @{$self->{list}} )
{
my ( $type, $deps ) = $dep->depends( $target->file, $time );
push @{$deps{$type}}, @$deps;
}
my $ndeps = 0;
map { $ndeps += @{$deps{$_}} } qw( var time sig );
# return list of dependencies. if there are none, return
# the empty hash if force is one
$depends{$target->file} = \%deps
if $ndeps or $target->force || $self->{state}->Force;
}
}
\%depends;
}
sub update
{
my ( $self, $targets ) = @_;
local $Carp::CarpLevel = $Carp::CarpLevel + 1;
for my $target ( @$targets )
{
print STDOUT ("Updating target ", $target->file, "\n" )
if $self->Verbose;
$_->update( $target->file ) foreach @{$self->{list}};
}
}
1;
( run in 0.481 second using v1.01-cache-2.11-cpan-5a3173703d6 )