#!/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() {
"$@" || 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
- # this can hang if we have an old nfs mount
- 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