#!/usr/bin/perl

package Verby::Step::Simple;
use Moose::Role;

use Scalar::Util qw/refaddr/;

with qw/Verby::Step/;

use MooseX::AttributeHelpers;

sub depends {} # FIXME Moose::Role
has depends => (
	isa        => "ArrayRef[Verby::Step]",
	metaclass  => "Collection::Array",
	is         => "rw",
	default    => sub { [] },
	auto_deref => 1,
	provides => {
		clear => "clear_deps",
	},
);

has action => (
	isa => "Object", # "Verby::Action",
	is => "rw",
);

sub add_deps {
	my $self = shift;
	my %seen;
	$self->depends([ grep { !$seen{refaddr $_}++ } @{ $self->depends }, @_ ]);

}

sub is_satisfied {
	my ( $self, $c, @args ) = @_;
	$self->action->verify( $c, @args );
}

__PACKAGE__;

__END__