From 216202e2cdff9623f815ac998c1b865168ff1583 Mon Sep 17 00:00:00 2001 From: Hayden Hamilton Date: Sun, 24 May 2026 13:48:38 +0100 Subject: Tracked install/uninstall/clean of scripts --- Makeclean.rc | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 Makeclean.rc (limited to 'Makeclean.rc') diff --git a/Makeclean.rc b/Makeclean.rc new file mode 100755 index 0000000..d2d138f --- /dev/null +++ b/Makeclean.rc @@ -0,0 +1,69 @@ +#!/bin/rc + +# This script will remove any deleted scripts/dirs previously copied into $1 +# If a directory is present, has previously been copied into $1, +# but no longer contains any executable scripts, this will also be removed. + +bin = $1 + +touch .installed .dirsmade +installed = `$nl{cat .installed} +dirsmade = `$nl{cat .dirsmade} + +fn sigexit { + if (~ $clean_installed ()) { + rm .installed + } else { + {for (s in $clean_installed) { echo $s }} > .installed + } + + if (~ $clean_dirsmade ()) { + rm .dirsmade + } else { + {for (d in $clean_dirsmade) { echo $d }} > .dirsmade + } +} + +for (s in $installed) { + p = $bin/$s + if (test -f $s && test -x $s) { + clean_installed = ($clean_installed $s) + } else { + echo RM $p + rm $p + removed = ($removed $p) + } +} + +fn check_dir_used { + d = $1 { + for (s in $clean_installed) { + ds = `$nl{dirname $s} + if (!~ $ds '.') { + p = '.' + for (e in `$nl'/'{echo $ds}) { + p = $p/$e + if (~ `$nl{echo $p | sed 's/^\.\///'} $d){ + return 0 + } + } + } + } + } + return 1 +} + +for (d in $dirsmade) { + p = $bin/$d + if (test -d $d && check_dir_used $d) { + clean_dirsmade = ($clean_dirsmade $d) + } else { + echo RMDIR $p + rmdir $p + removed = ($removed $p) + } +} + +if (~ $removed ()) { + echo nothing to clean +} -- cgit v1.2.3