add terminal warning for uninstalled changes
authorIan Kelling <ian@iankelling.org>
Wed, 1 Mar 2023 22:08:14 +0000 (17:08 -0500)
committerIan Kelling <ian@iankelling.org>
Wed, 1 Mar 2023 22:08:14 +0000 (17:08 -0500)
I noticed switch-mail-host had run with an old version
and didn't send the right subvolumes, and it was because
I didn't remember to install changed scripts.

install-my-scripts
script-files [new file with mode: 0644]
system-status

index 6d27eeea51a04e1a7dcdf188216b87d20c001768..9ec8c77e6d02ddf77aa6370d6f06facaaf4f1d09 100755 (executable)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-
-# Running these files directly won't be good since we are
-# unmounting the volume they live on.
-# This never really get's run, since we normally only
-# seed these files to other hosts using btrbk-run.
+# usage: run with no arguments.
+# Scripts that would interfere with unmounting /a, install them elsewhere.
 
 
 set -eE -o pipefail
@@ -40,37 +37,23 @@ if test -t 0; then
   }
 fi
 
-# scripts that would interfere with unmounting /a, put them elsewhere.
 # note: previously used the install command, but it had this habit of
 # like, once a month or so the files would be "not found" by a script
 # trying to use them, within a few minute of the last time this
 # ran. Very strange, dunno why, but rsync won't do anything unless these
 # changed, so that should fix it.
-/a/bin/log-quiet/setup
-rsync -tl --chmod=755 --chown=root:root \
-      switch-mail-host \
-      switch-host2 \
-      btrbk-run mount-latest-subvol \
-      check-subvol-stale myi3status \
-      mailbindwatchdog \
-      check-mailq \
-      unsaved-buffers.el \
-      mail-backup-clean \
-      iptables-exim \
-      ip6tables-exim \
-      exim-nn-iptables \
-      check-crypttab \
-      /a/bin/cedit/cedit \
-      /usr/local/bin
-rsync -t --chmod=755 --chown=root:root /a/bin/errhandle/err /usr/local/lib
-
-cmd=( rsync -aiSAX --chown=root:root --chmod=g-s
-      epanic-clean
-      system-status
-      btrfsmaint
-      mailtest-check
-      dynamic-ip-update /usr/local/bin
-    )
+
+
+rs() {
+  # some files are intentionally not executable in git
+  rsync -aSAX --chmod=755 --chown=root:root "$@"
+}
+
+source /a/bin/ds/script-files
+
+rs ${my_bin_files[@]} /usr/local/bin
+rs $my_lib_files /usr/local/lib
+
 
 sre() {
   service=$1
@@ -82,6 +65,9 @@ sre() {
 
 }
 
+tmpf=$(mktemp)
+# SAX are acls and things, dont use but whatever
+rs -i ${my_service_scripts[@]} /usr/local/bin >$tmpf
 while read -r line; do
   file="${line:12}"
   #echo debug: file: $file
@@ -97,4 +83,5 @@ while read -r line; do
       sre ${file//-/}
       ;;
   esac
-done < <("${cmd[@]}")
+done <$tmpf
+rm $tmpf
diff --git a/script-files b/script-files
new file mode 100644 (file)
index 0000000..309d5bd
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/bash
+### FOR SOURCING ###
+
+my_bin_files=(
+  switch-mail-host
+  switch-host2
+  btrbk-run mount-latest-subvol
+  check-subvol-stale myi3status
+  mailbindwatchdog
+  check-mailq
+  unsaved-buffers.el
+  mail-backup-clean
+  iptables-exim
+  ip6tables-exim
+  exim-nn-iptables
+  check-crypttab
+  /a/bin/cedit/cedit
+)
+
+for f in /b/log-quiet/*; do
+  if [[ -x $f && ! -d $f && ! -L $f && $f != setup ]]; then
+    my_bin_files+=("$f")
+  fi
+done
+
+
+my_service_scripts=(
+  epanic-clean
+  system-status
+  btrfsmaint
+  mailtest-check
+  dynamic-ip-update
+)
+
+# note: turn this into an array if we ever add more
+my_lib_files=/a/bin/errhandle/err
+
+all_my_scripts=("${my_service_scripts[@]}" "${my_bin_files[@]}" $my_lib_files)
index 3513c90863631bcc2bf20e93e6f9afaa30e7e646..09dd469606152eed4149835cc7fd2fe6af41a7a5 100755 (executable)
@@ -3,7 +3,8 @@
 # SPDX-License-Identifier: AGPL-3.0-or-later
 
 # usage: runs once every 15 seconds unless any args are passed, or we
-# then just runs once. On battery power, run once per minute.
+# then just runs once and have verbose output. On battery power, run
+# once per minute.
 
 if [ -z "$BASH_VERSION" ]; then echo "error: shell is not bash" >&2; exit 1; fi
 
@@ -267,6 +268,7 @@ write-status() {
 
   begin=false
 
+  # todo: make this robust to the case of /a not being mounted
   if ! make -C /b/ds -q ~/.local/distro-begin 2>/dev/null || [[ $(<~/.local/distro-begin) != 0 ]]; then
     begin=true
   fi
@@ -284,6 +286,7 @@ write-status() {
   elif $end; then
     chars+=(DE)
   else
+    source /a/bin/ds/script-files
     f=~/.local/conflink
     # shellcheck disable=SC2043
     for _ in 1; do
@@ -307,7 +310,7 @@ write-status() {
         done
 
         # Just because i forget a lot, -mmin -NUM means files modified <= NUM minutes ago
-        if (( fmin < 0 )) && [[ $(find ${all_dirs[@]} -mmin $fmin -type f -print -quit 2>/dev/null) ]]; then
+        if (( fmin < 0 )) && [[ $(find ${all_my_scripts[@]} ${all_dirs[@]} -mmin $fmin -type f -print -quit 2>/dev/null) ]]; then
           v conflink newer filesystem files
           chars+=(CONFLINK)
           break