finally fully use gnu license recommendations
[distro-setup] / mount-latest-remote
1 #!/bin/bash
2 # I, Ian Kelling, follow the GNU license recommendations at
3 # https://www.gnu.org/licenses/license-recommendations.en.html. They
4 # recommend that small programs, < 300 lines, be licensed under the
5 # Apache License 2.0. This file contains or is part of one or more small
6 # programs. If a small program grows beyond 300 lines, I plan to switch
7 # its license to GPL.
8
9 # Copyright 2024 Ian Kelling
10
11 # Licensed under the Apache License, Version 2.0 (the "License");
12 # you may not use this file except in compliance with the License.
13 # You may obtain a copy of the License at
14
15 # http://www.apache.org/licenses/LICENSE-2.0
16
17 # Unless required by applicable law or agreed to in writing, software
18 # distributed under the License is distributed on an "AS IS" BASIS,
19 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 # See the License for the specific language governing permissions and
21 # limitations under the License.
22
23
24
25 # usage: HOST [mount-latest-subvol args]
26
27 set -e; . /usr/local/lib/bash-bear; set +e
28
29 readonly this_file; this_file="$(readlink -f -- "${BASH_SOURCE[0]}")";
30 script_dir=${this_file%/*}
31
32 if (( ! $# )); then
33 echo "mount-latest-remote: error: a host argument"
34 exit 1
35 fi
36
37 tg="$1"
38 shift
39
40 $script_dir/install-my-scripts
41 cd /usr/local
42
43 ecode=0
44
45 # exit code run
46 er() {
47 local ret=0
48 "$@" || ret=$?
49 if (( ret )); then
50 echo "$0: failed command: $*"
51 fi
52 if (( ret > ecode )); then
53 ecode=$ret
54 fi
55 }
56 rsynctg=$tg
57 if [[ $tg == *:* ]]; then
58 rsynctg="[$tg]"
59 fi
60 # R = relative, t = times, O = omit-dir-times, p = perms
61 er rsync -RtOp bin/{mount-latest-subvol,check-subvol-stale} lib/bash-bear "root@$rsynctg:/usr/local" ||:
62 # note: this can hang if we have an old nfs mount.
63 er ssh root@$tg timeout -s 9 600 /usr/local/bin/mount-latest-subvol "$@"
64
65 exit $ecode