-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy-pi.sh
More file actions
executable file
·41 lines (35 loc) · 1.08 KB
/
deploy-pi.sh
File metadata and controls
executable file
·41 lines (35 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env bash
set -Eeuo pipefail
ENV_FILE="${ENV_FILE:-$HOME/dev/arch-scripts/deploy_pi.env}"
[[ -f "$ENV_FILE" ]] && source "$ENV_FILE"
: "${PI_HOST:?Missing PI_HOST}"
LOCAL_ROOT="${LOCAL_ROOT:-$HOME/dev/pi-scripts}"
REMOTE_SBIN="${REMOTE_SBIN:-/usr/local/sbin}"
RSYNC_BIN="${RSYNC_BIN:-/usr/bin/rsync}"
LOCAL_PRIVATE_DIR="${LOCAL_PRIVATE_DIR:-$LOCAL_ROOT/private}"
RSYNC_ROOT=(--rsync-path="sudo ${RSYNC_BIN}")
echo "[1/2] Deploy public scripts -> ${REMOTE_SBIN}"
rsync -av --progress "${RSYNC_ROOT[@]}" \
--exclude '.git/' \
--exclude 'private/' \
--include '*/' \
--include '*.sh' \
--exclude '*' \
--chown=root:root \
--chmod=F700 \
"$LOCAL_ROOT/" \
"$PI_HOST:${REMOTE_SBIN}/"
echo "[2/2] Deploy private scripts -> ${REMOTE_SBIN}"
if [[ -d "$LOCAL_PRIVATE_DIR" ]]; then
rsync -av --progress "${RSYNC_ROOT[@]}" \
--include '*/' \
--include '*.sh' \
--exclude '*' \
--chown=root:root \
--chmod=F700 \
"$LOCAL_PRIVATE_DIR/" \
"$PI_HOST:${REMOTE_SBIN}/"
else
echo "NOTE: $LOCAL_PRIVATE_DIR not found, skipping private deploy."
fi
echo "Done."