move the actual doing stuff code for FS lib into a Guts.pm
[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';
0d1a41d9 6use DX::Lib::FS::Guts;
4d2ad771 7use Moo;
8
9with 'DX::Role::Action';
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) = @_;
0d1a41d9 33 DX::Lib::FS::Guts->create_file($self->path, $self->mode, $self->data);
34 +(path_status => $self->path);
4d2ad771 35}
36
dd866f63 37sub but_add {
38 $_[0]->but(data => $_[0]->data.$_[1]."\n")
39}
40
4d2ad771 411;