surprise! Object::Remote!
[scpubgit/DKit.git] / lib / DX / Lib / FS / Action / CreateFile.pm
CommitLineData
4d2ad771 1package DX::Lib::FS::Action::CreateFile;
2
e02a5c0a 3use aliased 'DX::Lib::FS::Fact::FileContent';
4d2ad771 4use aliased 'DX::Lib::FS::Fact::PathStatus';
5use aliased 'DX::Lib::FS::Fact::PathStatusInfo';
6use Moo;
7
8with 'DX::Role::Action';
9854aea0 9with 'DX::Lib::FS::Role::RunOn';
4d2ad771 10
11has path => (is => 'ro', required => 1);
12
640fa37e 13has mode => (is => 'ro', predicate => 1);
14
e02a5c0a 15has data => (is => 'ro', default => sub { '' });
16
4d2ad771 17sub expected_effect {
18 my ($self) = @_;
19 return +(path_status => PathStatus->new(
20 path => $self->path,
640fa37e 21 info => PathStatusInfo->new(
22 is_file => 1,
23 mode => ($self->has_mode ? $self->mode : '')
24 )
e02a5c0a 25 ), file_content => FileContent->new(
26 path => $self->path,
27 data => $self->data,
4d2ad771 28 ));
29}
30
31sub _do_run {
32 my ($self) = @_;
9854aea0 33 $self->_call_guts(create_file => $self->mode, $self->data);
0d1a41d9 34 +(path_status => $self->path);
4d2ad771 35}
36
dd866f63 37sub but_add {
38 $_[0]->but(data => $_[0]->data.$_[1]."\n")
39}
40
4d2ad771 411;