car_ui/scripts/deploy.sh
2026-09-15 17:47:41 +03:00

109 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(cd -- "$SCRIPT_DIR/.." && pwd)"
SOURCE_DIR="$PROJECT_DIR/dist/car_ui"
INSTALL_DIR="/opt/car_ui"
SERVICE="car-ui.service"
DESKTOP_USER="cheykrym"
DESKTOP_DIR="/home/$DESKTOP_USER/Desktop"
LAUNCHER_SOURCE="$PROJECT_DIR/system_configs/Return_to_Car_UI.desktop"
LAUNCHER_TARGET="$DESKTOP_DIR/Return_to_Car_UI.desktop"
RETURN_HELPER_SOURCE="$PROJECT_DIR/scripts/return-to-car-mode.sh"
RETURN_HELPER_TARGET="/usr/local/bin/return-to-car-mode"
DEV_HELPER_SOURCE="$PROJECT_DIR/scripts/switch-to-dev-mode.sh"
DEV_HELPER_TARGET="/usr/local/bin/switch-to-dev-mode"
if [[ $EUID -ne 0 ]]; then
echo "ERROR: deploy.sh must be run as root."
echo
echo "Run:"
echo " sudo $0"
exit 1
fi
if [[ ! -x "$SOURCE_DIR/car_ui" ]]; then
echo "ERROR: Build not found:"
echo " $SOURCE_DIR/car_ui"
echo
echo "Run scripts/build.sh first."
exit 1
fi
if [[ ! -f "$LAUNCHER_SOURCE" ]]; then
echo "ERROR: Desktop launcher not found:"
echo " $LAUNCHER_SOURCE"
exit 1
fi
if [[ ! -f "$RETURN_HELPER_SOURCE" ]]; then
echo "ERROR: Return-to-Car helper not found:"
echo " $RETURN_HELPER_SOURCE"
exit 1
fi
if [[ ! -f "$DEV_HELPER_SOURCE" ]]; then
echo "ERROR: Switch-to-Dev helper not found:"
echo " $DEV_HELPER_SOURCE"
exit 1
fi
echo "==> Stopping $SERVICE"
systemctl stop "$SERVICE" 2>/dev/null || true
echo "==> Installing Car UI to $INSTALL_DIR"
rm -rf "$INSTALL_DIR"
mkdir -p "$INSTALL_DIR"
cp -a "$SOURCE_DIR/." "$INSTALL_DIR/"
echo "==> Installing system helpers"
install -o root -g root -m 755 \
"$RETURN_HELPER_SOURCE" \
"$RETURN_HELPER_TARGET"
install -o root -g root -m 755 \
"$DEV_HELPER_SOURCE" \
"$DEV_HELPER_TARGET"
echo "==> Installing desktop launcher"
mkdir -p "$DESKTOP_DIR"
install \
-o "$DESKTOP_USER" \
-g "$DESKTOP_USER" \
-m 755 \
"$LAUNCHER_SOURCE" \
"$LAUNCHER_TARGET"
# Mark launcher as trusted for the desktop environment.
sudo -u "$DESKTOP_USER" \
DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u "$DESKTOP_USER")/bus" \
gio set "$LAUNCHER_TARGET" metadata::trusted true 2>/dev/null || true
echo "==> Starting $SERVICE"
if [[ "$(systemctl get-default)" == "multi-user.target" ]]; then
echo "==> Starting $SERVICE"
systemctl start "$SERVICE"
else
echo "==> Development mode detected"
echo " $SERVICE will not be started"
fi
echo
echo "==> Deployment complete"
echo " Application: $INSTALL_DIR/car_ui"
echo " Return helper: $RETURN_HELPER_TARGET"
echo " Dev helper: $DEV_HELPER_TARGET"
echo " Desktop launcher: $LAUNCHER_TARGET"