Add helper procedure implementing "mkdir -p" in Perl
authorJacob Bachmeyer <jcb@gnu.org>
Sat, 5 Nov 2022 04:09:45 +0000 (23:09 -0500)
committerJacob Bachmeyer <jcb@gnu.org>
Sat, 5 Nov 2022 04:09:45 +0000 (23:09 -0500)
gatekeeper.pl

index 0a0672b725c49d9171cc498b34724a350dd83d07..b9feffe26391a388fd8e97b84c9189c83a3c5d59 100755 (executable)
@@ -2315,6 +2315,26 @@ sub check_files {
 # - [EX] Execution
 #
 
+=item mkdir_p ( $base, @directory )
+
+Ensure that DIRECTORY (expressed as returned by File::Spec->splitdir)
+exists under the BASE directory.
+
+=cut
+
+sub mkdir_p {
+  # @_ is directory name elements
+
+  my @dir_steps;       # list of intermediate dirs needed
+  # for example, creating bar/baz/quux in an empty /foo populates this list
+  # with qw( bar bar/baz bar/baz/quux )
+
+  for (@dir_steps = (); @_ && ! -d File::Spec->catdir(@_); pop)
+    { unshift @dir_steps, File::Spec->catdir(@_) }
+
+  mkdir $_ or die "mkdir($_): $!" for @dir_steps;
+}
+
 sub archive {
   my $dir = shift;
   my $subdir = shift;