host info updates
[distro-setup] / mount-latest-remote
index d43cbf2081102ba3c255de6d94c9c74595f1ac04..f63a6f7954da3df926aabdf6560c75e9bd5abece 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.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-source /usr/local/lib/err
 
-script_dir=$(dirname $(readlink -f "$BASH_SOURCE"))
+
+# usage: HOST [mount-latest-subvol args]
+
+set -e; . /usr/local/lib/bash-bear; set +e
+
+this_file="$(readlink -f -- "${BASH_SOURCE[0]}")"
+readonly this_file script_dir="${this_file%/*}"
 
 if (( ! $# )); then
-  echo "mount-latest-remote: error: expected 1 or more host arguments"
+  echo "mount-latest-remote: error: a host argument"
   exit 1
 fi
 
+tg="$1"
+shift
+
 $script_dir/install-my-scripts
 cd /usr/local
 
 ecode=0
-failed_hosts=()
 
 # exit code run
 er() {
@@ -34,26 +48,18 @@ er() {
   "$@" || ret=$?
   if (( ret )); then
     echo "$0: failed command: $*"
-    failed_hosts+=($tg)
   fi
   if (( ret > ecode )); then
     ecode=$ret
   fi
 }
-for tg; do
-  rsynctg=$tg
-  if [[ $tg == *:* ]]; then
-    rsynctg="[$tg]"
-  fi
-  # R = relative, t = times, O = omit-dir-times, p = perms
-  er rsync -RtOp bin/{mount-latest-subvol,check-subvol-stale} lib/err "root@$rsynctg:/usr/local" || continue
-  # note: this can hang if we have an old nfs mount.
-  er ssh root@$tg timeout -s 9 600 /usr/local/bin/mount-latest-subvol
-done
-
-if (( $# == ${#failed_hosts[@]} )); then
-  echo "$0: error: all hosts failed: $*" >&2
-elif (( ${#failed_hosts[@]} )); then
-  echo "$0: error: some hosts failed: ${failed_hosts[@]}" >&2
+rsynctg=$tg
+if [[ $tg == *:* ]]; then
+  rsynctg="[$tg]"
 fi
+# R = relative, t = times, O = omit-dir-times, p = perms
+er rsync -RtOp bin/{mount-latest-subvol,check-subvol-stale} lib/bash-bear "root@$rsynctg:/usr/local" ||:
+# note: this can hang if we have an old nfs mount.
+er ssh root@$tg timeout -s 9 600 /usr/local/bin/mount-latest-subvol "$@"
+
 exit $ecode