From: Ian Kelling Date: Wed, 1 Mar 2023 22:08:14 +0000 (-0500) Subject: add terminal warning for uninstalled changes X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=commitdiff_plain;h=c905a372dbf16d619f6feca1f0cc95ffe84e0789 add terminal warning for uninstalled changes 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. --- diff --git a/install-my-scripts b/install-my-scripts index 6d27eee..9ec8c77 100755 --- a/install-my-scripts +++ b/install-my-scripts @@ -13,11 +13,8 @@ # 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 index 0000000..309d5bd --- /dev/null +++ b/script-files @@ -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) diff --git a/system-status b/system-status index 3513c90..09dd469 100755 --- a/system-status +++ b/system-status @@ -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