lesavka/scripts/install-client.sh

55 lines
1.4 KiB
Bash
Raw Normal View History

2025-06-01 13:31:22 -05:00
#!/usr/bin/env bash
2025-06-15 11:15:52 -05:00
# install-client.sh - install and setup all client related apps and environments
2025-06-01 13:31:22 -05:00
set -euo pipefail
2025-06-01 14:18:42 -05:00
2025-06-01 21:59:43 -05:00
ORIG_USER=${SUDO_USER:-$(id -un)}
2025-06-01 21:58:47 -05:00
# 1. packages (Arch)
sudo pacman -Syq --needed --noconfirm git rustup protobuf gcc evtest
2025-06-01 13:31:22 -05:00
2025-06-01 21:58:47 -05:00
# 2. Rust tool-chain for both root & user
sudo rustup default stable
2025-06-01 21:59:43 -05:00
sudo -u "$ORIG_USER" rustup default stable
2025-06-01 21:58:47 -05:00
# 3. clone / update into a user-writable dir
2025-06-23 00:26:02 -05:00
SRC="$HOME/.local/src/lesavka"
2025-06-01 21:58:47 -05:00
if [[ -d $SRC/.git ]]; then
2025-06-01 21:59:43 -05:00
sudo -u "$ORIG_USER" git -C "$SRC" pull --ff-only
2025-06-01 14:18:42 -05:00
else
2025-06-01 21:59:43 -05:00
sudo -u "$ORIG_USER" git clone "$PWD" "$SRC"
2025-06-01 14:18:42 -05:00
fi
2025-06-01 21:58:47 -05:00
# 4. build
2025-06-17 08:17:23 -05:00
sudo -u "$ORIG_USER" bash -c "cd '$SRC/client' && cargo clean && cargo build --release"
2025-06-01 21:58:47 -05:00
# 5. install binary
2025-06-23 00:26:02 -05:00
sudo install -Dm755 "$SRC/client/target/release/lesavka-client" /usr/local/bin/lesavka-client
2025-06-01 14:18:42 -05:00
2025-06-23 00:26:02 -05:00
# 6. systemd service for system scope: /etc/systemd/system/lesavka-client.service
sudo tee /etc/systemd/system/lesavka-client.service >/dev/null <<'EOF'
2025-06-01 13:31:22 -05:00
[Unit]
2025-06-23 07:18:26 -05:00
Description=Lesavka Client
2025-06-01 21:58:47 -05:00
After=network-online.target
Wants=network-online.target
2025-06-01 14:18:42 -05:00
2025-06-01 13:31:22 -05:00
[Service]
2025-06-08 13:35:23 -05:00
Type=simple
2025-06-08 14:24:15 -05:00
User=root
Group=root
2025-06-08 15:03:10 -05:00
2025-06-08 12:47:11 -05:00
Environment=RUST_LOG=debug
2025-06-26 14:05:23 -05:00
Environment=LESAVKA_DEV_MODE=1
Environment=LESAVKA_SERVER_ADDR=http://64.25.10.31:50051
2025-06-08 15:03:10 -05:00
2025-06-23 00:26:02 -05:00
ExecStart=/usr/local/bin/lesavka-client
2025-06-08 13:35:23 -05:00
Restart=no
2025-06-01 14:18:42 -05:00
2025-06-01 13:31:22 -05:00
[Install]
WantedBy=default.target
EOF
2025-06-08 15:03:10 -05:00
# 7. Call the *user* instance inside the callers session
2025-06-08 14:40:15 -05:00
sudo systemctl daemon-reload
2025-06-23 00:26:02 -05:00
sudo systemctl enable --now lesavka-client.service
sudo systemctl restart lesavka-client || true