move the actual doing stuff code for FS lib into a Guts.pm
[scpubgit/DKit.git] / lib / DX / Lib / FS / Action / CreateDirectory.pm
index 5fcdef3..5c8346b 100644 (file)
@@ -2,6 +2,7 @@ package DX::Lib::FS::Action::CreateDirectory;
 
 use aliased 'DX::Lib::FS::Fact::PathStatus';
 use aliased 'DX::Lib::FS::Fact::PathStatusInfo';
+use DX::Lib::FS::Guts;
 use Moo;
 
 with 'DX::Role::Action';
@@ -23,15 +24,8 @@ sub expected_effect {
 
 sub _do_run {
   my ($self) = @_;
-  if ($self->has_mode) {
-    my $umask = umask(0000);
-    mkdir($self->path, oct($self->mode))
-      or do { umask($umask); die "Couldn't mkdir ${\$self->path}: $!" };
-    umask($umask);
-  } else {
-    mkdir($self->path) or die "Couldn't mkdir ${\$self->path}: $!";
-  }
-  +(path_status => PathStatus->new(path => $self->path));
+  DX::Lib::FS::Guts->create_directory($self->path, $self->mode);
+  +(path_status => $self->path);
 }
 
 1;