host info updates
[distro-setup] / install-my-scripts
index 67a576a4919c230c338892575f7ec6c2a3215111..6d43952a434c84d38e271674278ba52bdb0bc60e 100755 (executable)
@@ -1,5 +1,12 @@
 #!/bin/bash
-# Copyright (C) 2016 Ian Kelling
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # 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
@@ -27,24 +32,64 @@ trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
 
 x="$(readlink -f -- "${BASH_SOURCE[0]}")"; cd ${x%/*} # directory of this file
 
+m() {
+  "$@"
+}
+
+# be a bit more verbose if we are connected to a terminal
+if test -t 0; then
+  #echo debug: in terminal
+  m() {
+    echo "$*"
+    "$@"
+  }
+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 -t --chmod=755 --chown=root:root switch-mail-host btrbk-run mount-latest-subvol \
-      check-subvol-stale system-status myi3status mailtest-check \
-      epanic-clean mailbindwatchdog \
-      /a/bin/log-quiet/sysd-mail-once hssh \
-      btrfsmaint \
-      dynamic-ip-update \
-      check-mailq \
-      unsaved-buffers.el \
-      mail-backup-clean \
-      iptables-exim \
-      ip6tables-exim \
-      /usr/local/bin
-rsync -t --chmod=755 --chown=root:root /a/bin/errhandle/err /usr/local/lib
+
+
+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
+  if [[ $(systemctl is-active $1.service ||:) != inactive ]]; then
+    # just fire and forget. sometimes a script restart can fail, but then
+    # then auto restart mechanism makes it succeed.
+    m systemctl restart $service ||: &
+  fi
+
+}
+
+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
+  case $file in
+    btrfsmaint)
+      sre btrfsmaintstop
+      ;;
+    mailtest-check)
+      # we stopped removing the dashes in services recently.
+      sre $file
+      ;;
+    *)
+      sre ${file//-/}
+      ;;
+  esac
+done <$tmpf
+rm $tmpf