Repository navigation
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·61 lines (52 loc) · 2.26 KB
/
Copy pathdeploy.sh
File metadata and controls
executable file
·61 lines (52 loc) · 2.26 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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env bash
# SPDX-License-Identifier: AGPL-3.0-or-later
#
# This file is part of pi-stomp.
#
# pi-stomp is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# pi-stomp is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with pi-stomp. If not, see <https://www.gnu.org/licenses/>.
# Deploy pi-stomp source to the device via rsync and restart the service.
# Override PISTOMP_HOST / PISTOMP_USER if your device differs from the default.
set -euo pipefail
HOST="${PISTOMP_HOST:-pistomp.local}"
USER="${PISTOMP_USER:-pistomp}"
TARGET="${USER}@${HOST}"
REMOTE_DIR="/home/pistomp/pi-stomp"
echo "==> Deploying to ${TARGET}"
rsync -az --delete \
--exclude='.venv' --exclude='__pycache__' --exclude='*.pyc' \
--exclude='.pytest_cache' --exclude='.ruff_cache' --exclude='.coverage' \
--exclude='.DS_Store' --exclude='.claude' --exclude='.github' \
--exclude='typings' \
--exclude='.git' --exclude='.gitignore' --exclude='tests' \
--exclude='setup' --exclude='*.md' --exclude='*.yml' --exclude='*.yaml' \
--exclude='*.json' --exclude='*.toml' --exclude='*.lock' \
--filter='protect .git-meta' \
./ \
"${TARGET}:${REMOTE_DIR}/"
echo "==> Restarting mod-ala-pi-stomp"
ssh "${TARGET}" 'sudo systemctl restart mod-ala-pi-stomp'
echo "==> Service starting, showing logs..."
echo "----------------------------------------"
ssh "${TARGET}" "timeout 2 sudo journalctl -u mod-ala-pi-stomp -f --since '1 second ago' 2>/dev/null || true"
echo "----------------------------------------"
if ssh "${TARGET}" 'sudo systemctl is-active --quiet mod-ala-pi-stomp'; then
echo "==> Service started successfully."
else
echo "ERROR: Service failed to start!"
echo "----------------------------------------"
echo "Service status:"
ssh "${TARGET}" 'sudo systemctl status mod-ala-pi-stomp'
exit 1
fi
echo "==> Done"