Commit | Line | Data |
---|---|---|
9c7b21a2 | 1 | package DX::Role::Action; |
2 | ||
3 | use Moo::Role; | |
4 | ||
577a2146 | 5 | has id => (is => 'ro'); |
6 | ||
9c7b21a2 | 7 | has dependencies => (is => 'ro', default => sub { [] }); |
8 | ||
9 | has was_run => (is => 'rw'); | |
10 | ||
11 | requires 'expected_effect'; | |
12 | requires '_do_run'; | |
13 | ||
14 | sub but { my ($self, @but) = @_; ref($self)->new(%$self, @but); } | |
15 | ||
16 | sub run { | |
17 | my ($self) = @_; | |
18 | die "Can't run, was already run" if $self->was_run; | |
19 | my @res = $self->_do_run; | |
20 | $self->was_run(1); | |
21 | return @res; | |
22 | } | |
23 | ||
24 | 1; |