mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 20:16:35 +00:00
feat(deploy): client|server|both positional arg for installer
Pick install mode at the command line instead of multiple SKIP_* env flags. Defaults to 'both' so existing single-host usage is unchanged.
This commit is contained in:
parent
bfbaa72022
commit
b42e972fcf
1 changed files with 23 additions and 11 deletions
|
|
@ -15,15 +15,15 @@
|
|||
#
|
||||
# Re-run after every git change to pull + rebuild + redeploy.
|
||||
#
|
||||
# Usage: sudo ./deploy/scripts/setup-pi-kiosk.sh
|
||||
# Usage: sudo ./deploy/scripts/setup-pi-kiosk.sh [client|server|both]
|
||||
# client = kiosk-only host (Rust binary + cage + systemd unit)
|
||||
# server = headless server host (Docker stack only, no kiosk)
|
||||
# both = single-box install of both (default)
|
||||
#
|
||||
# Env overrides:
|
||||
# BF_HOME=/path/to/repo override repo location (default: $HOME/betterframe)
|
||||
# BF_REPO_URL=git@… override clone URL (default: github)
|
||||
# SKIP_BUILD=1 skip kiosk cargo build (expects existing binary)
|
||||
# SKIP_DOCKER=1 skip `docker compose up -d --build`
|
||||
# SKIP_KIOSK=1 server-only host (no kiosk service / cage / tty1)
|
||||
# SKIP_SERVER=1 kiosk-only host (no Docker stack)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
|
|
@ -32,6 +32,18 @@ if [ "$EUID" -ne 0 ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
MODE="${1:-both}"
|
||||
case "${MODE}" in
|
||||
client) INSTALL_KIOSK=1; INSTALL_SERVER=0 ;;
|
||||
server) INSTALL_KIOSK=0; INSTALL_SERVER=1 ;;
|
||||
both) INSTALL_KIOSK=1; INSTALL_SERVER=1 ;;
|
||||
*)
|
||||
echo "error: unknown mode '${MODE}'. Use client | server | both." >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
echo "==> Mode: ${MODE}"
|
||||
|
||||
REPO_URL="${BF_REPO_URL:-https://github.com/BetterCorp/BetterFrame.git}"
|
||||
BUILD_USER="${SUDO_USER:-$(id -un)}"
|
||||
if [ "${BUILD_USER}" = "root" ]; then
|
||||
|
|
@ -70,7 +82,7 @@ REPO_ROOT="${BF_HOME}"
|
|||
# ----------------------------------------------------------------------------
|
||||
# 3. Docker engine + compose plugin
|
||||
# ----------------------------------------------------------------------------
|
||||
if [ "${SKIP_SERVER:-0}" != "1" ] && [ "${SKIP_DOCKER:-0}" != "1" ]; then
|
||||
if [ "${INSTALL_SERVER}" = "1" ]; then
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
echo "==> Installing Docker (via convenience script)"
|
||||
curl -fsSL https://get.docker.com | sh
|
||||
|
|
@ -91,7 +103,7 @@ fi
|
|||
# ----------------------------------------------------------------------------
|
||||
# 4. Kiosk runtime deps (GTK/GStreamer/WebKit + cage + seatd)
|
||||
# ----------------------------------------------------------------------------
|
||||
if [ "${SKIP_KIOSK:-0}" != "1" ]; then
|
||||
if [ "${INSTALL_KIOSK}" = "1" ]; then
|
||||
echo "==> Installing kiosk runtime deps"
|
||||
apt-get install -y --no-install-recommends \
|
||||
cage seatd \
|
||||
|
|
@ -107,7 +119,7 @@ fi
|
|||
# ----------------------------------------------------------------------------
|
||||
# 5. Rust toolchain (kiosk build prerequisite)
|
||||
# ----------------------------------------------------------------------------
|
||||
if [ "${SKIP_KIOSK:-0}" != "1" ] && [ "${SKIP_BUILD:-0}" != "1" ]; then
|
||||
if [ "${INSTALL_KIOSK}" = "1" ] && [ "${SKIP_BUILD:-0}" != "1" ]; then
|
||||
if ! run_as_user "command -v cargo >/dev/null 2>&1"; then
|
||||
echo "==> Installing rustup as ${BUILD_USER}"
|
||||
run_as_user "curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable --profile minimal"
|
||||
|
|
@ -117,7 +129,7 @@ fi
|
|||
# ----------------------------------------------------------------------------
|
||||
# 6. Build + start Docker stack
|
||||
# ----------------------------------------------------------------------------
|
||||
if [ "${SKIP_SERVER:-0}" != "1" ] && [ "${SKIP_DOCKER:-0}" != "1" ]; then
|
||||
if [ "${INSTALL_SERVER}" = "1" ]; then
|
||||
echo "==> Building + starting Docker stack"
|
||||
run_as_user "cd '${REPO_ROOT}' && docker compose -f deploy/docker/docker-compose.yml up -d --build"
|
||||
fi
|
||||
|
|
@ -125,7 +137,7 @@ fi
|
|||
# ----------------------------------------------------------------------------
|
||||
# 7. Build + install kiosk binary
|
||||
# ----------------------------------------------------------------------------
|
||||
if [ "${SKIP_KIOSK:-0}" != "1" ]; then
|
||||
if [ "${INSTALL_KIOSK}" = "1" ]; then
|
||||
BIN_SRC="${REPO_ROOT}/kiosk/target/release/betterframe-kiosk"
|
||||
BIN_DST_DIR="/opt/betterframe/kiosk"
|
||||
BIN_DST="${BIN_DST_DIR}/betterframe-kiosk"
|
||||
|
|
@ -183,9 +195,9 @@ EOF
|
|||
fi
|
||||
|
||||
echo "==> Done."
|
||||
if [ "${SKIP_SERVER:-0}" != "1" ] && [ "${SKIP_DOCKER:-0}" != "1" ]; then
|
||||
if [ "${INSTALL_SERVER}" = "1" ]; then
|
||||
echo " Server stack: http://$(hostname -I | awk '{print $1}')/"
|
||||
fi
|
||||
if [ "${SKIP_KIOSK:-0}" != "1" ]; then
|
||||
if [ "${INSTALL_KIOSK}" = "1" ]; then
|
||||
echo " Kiosk service: systemctl status betterframe-kiosk"
|
||||
fi
|
||||
|
|
|
|||
Loading…
Reference in a new issue