chiark / gitweb /
Introduce oot_preclean
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 18 Jun 2021 15:18:42 +0000 (16:18 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 18 Jun 2021 15:18:42 +0000 (16:18 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
nailing-cargo

index 6be72f2afe5434c5327d51790b01fbd3ab1beb20..61184872ec3c00458bd4552f1de9c69dc125b3c1 100755 (executable)
@@ -95,6 +95,7 @@ our $online;
 our $just_linkfarm;
 our $leave_nailed;
 our $oot_clean;
+our $oot_preclean;
 our $do_nail=1;
 our $do_cargo_lock=1;
 our $do_lock=1;
@@ -578,6 +579,8 @@ sub addargs () {
     $cargo_lock_update           ? 'shallow' :
     '';
 
+  $oot_preclean //= 'no';
+
   our @add;
 
   if (!$cargo_lock_update) {
@@ -633,6 +636,11 @@ sub oot_massage_cmdline () {
         bld="$1"; shift; sd="$1"; shift; src="$1"; shift;  
         cd "$bld"; mkdir -p -- "$sd"; cd "$sd";
 END_BOTH
+    if ($oot_preclean ne 'no') {
+      $pre.= "find . -maxdepth 1 ! -path .";
+      $pre.= " ! -path ./target" if $oot_preclean ne 'full';
+      $pre.= " -print0 | xargs -0r echo rm -r --;"
+    }
     if ($linkfarm_depth eq 'shallow') {
       $pre.= <<'END_SHALLOW';
        clean () { find -lname "$src/*" -print0 | xargs -0r rm --; }; clean;
@@ -1033,6 +1041,10 @@ sub parse_args () {
       $do_nail = $do_cargo_lock = $do_lock = 0;
     } elsif (m{^--(clean|keep)-linkfarm$}) {
       $oot_clean = $1 eq 'clean';
+    } elsif (m{^--(no-)?preclean-linkfarm$}) {
+      $oot_preclean = $1 ? 'no' : 'src';
+    } elsif (m{^--preclean-linkfarm=(no|src|full)$}) {
+      $oot_preclean = $1;
     } elsif (m{^--(no-)?nail$}) {
       $do_nail = !$1;
     } elsif (m{^--(no-)?cargo-lock-manip$}) {