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 )