#!/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" HELPER_SOURCE="$PROJECT_DIR/scripts/return-to-car-mode.sh" HELPER_TARGET="/usr/local/bin/return-to-car-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 "$HELPER_SOURCE" ]]; then echo "ERROR: Return-to-Car helper not found:" echo " $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 Return to Car UI helper" install -m 755 "$HELPER_SOURCE" "$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" systemctl start "$SERVICE" echo echo "==> Deployment complete" echo " Application: $INSTALL_DIR/car_ui" echo " Launcher: $LAUNCHER_TARGET"