From f62da485857be95bc1de9720df6d7ccd263e9b61 Mon Sep 17 00:00:00 2001 From: cheykrym Date: Tue, 15 Sep 2026 15:53:41 +0300 Subject: [PATCH] add scripts --- build_app.sh | 4 -- run_ui.sh | 3 -- run_ui_remote.sh | 5 --- scripts/build.sh | 96 +++++++++++++++++++++++++++++++++++++++++++++++ scripts/deploy.sh | 43 +++++++++++++++++++++ scripts/run.sh | 33 ++++++++++++++++ setup_venv.sh | 5 --- 7 files changed, 172 insertions(+), 17 deletions(-) delete mode 100755 build_app.sh delete mode 100755 run_ui.sh delete mode 100644 run_ui_remote.sh create mode 100644 scripts/build.sh create mode 100644 scripts/deploy.sh create mode 100644 scripts/run.sh delete mode 100755 setup_venv.sh diff --git a/build_app.sh b/build_app.sh deleted file mode 100755 index 8a3b330..0000000 --- a/build_app.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -./.venv/bin/pyinstaller --noconfirm --clean --name car_ui --windowed ./main.py diff --git a/run_ui.sh b/run_ui.sh deleted file mode 100755 index 2e8024f..0000000 --- a/run_ui.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -./.venv/bin/python3 ./main.py diff --git a/run_ui_remote.sh b/run_ui_remote.sh deleted file mode 100644 index 2968571..0000000 --- a/run_ui_remote.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -export DISPLAY=:0 -./.venv/bin/python3 ./main.py 2>&1 | tee debug.log diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100644 index 0000000..946710e --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,96 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_DIR="$(cd -- "$SCRIPT_DIR/.." && pwd)" + +VENV_DIR="$PROJECT_DIR/.venv" +REQUIREMENTS="$PROJECT_DIR/requirements.txt" +SPEC_FILE="$PROJECT_DIR/car_ui.spec" +DIST_DIR="$PROJECT_DIR/dist/car_ui" + +echo "==> Car UI build" +echo " Project: $PROJECT_DIR" + +# -------------------------------------------------- +# Check project files +# -------------------------------------------------- + +if [[ ! -f "$REQUIREMENTS" ]]; then + echo "ERROR: requirements.txt not found:" + echo " $REQUIREMENTS" + exit 1 +fi + +if [[ ! -f "$SPEC_FILE" ]]; then + echo "ERROR: car_ui.spec not found:" + echo " $SPEC_FILE" + exit 1 +fi + +# -------------------------------------------------- +# Create virtual environment +# -------------------------------------------------- + +if [[ ! -d "$VENV_DIR" ]]; then + echo "==> Creating virtual environment" + + if ! command -v python3 >/dev/null 2>&1; then + echo "ERROR: python3 is not installed" + exit 1 + fi + + python3 -m venv "$VENV_DIR" +else + echo "==> Virtual environment already exists" +fi + +PYTHON="$VENV_DIR/bin/python" +PIP="$VENV_DIR/bin/pip" + +# -------------------------------------------------- +# Install dependencies +# -------------------------------------------------- + +echo "==> Installing dependencies" + +"$PIP" install --upgrade pip +"$PIP" install -r "$REQUIREMENTS" + +# -------------------------------------------------- +# Check PyInstaller +# -------------------------------------------------- + +if [[ ! -x "$VENV_DIR/bin/pyinstaller" ]]; then + echo "ERROR: PyInstaller is not installed." + echo " Add pyinstaller to requirements.txt" + exit 1 +fi + +# -------------------------------------------------- +# Build +# -------------------------------------------------- + +echo "==> Building Car UI" + +cd "$PROJECT_DIR" + +"$VENV_DIR/bin/pyinstaller" \ + --noconfirm \ + --clean \ + "$SPEC_FILE" + +# -------------------------------------------------- +# Verify result +# -------------------------------------------------- + +if [[ ! -x "$DIST_DIR/car_ui" ]]; then + echo "ERROR: Build failed." + echo " Executable not found:" + echo " $DIST_DIR/car_ui" + exit 1 +fi + +echo +echo "==> Build complete" +echo " $DIST_DIR/car_ui" diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100644 index 0000000..8e5c623 --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,43 @@ +#!/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" + +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 + +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 "==> Starting $SERVICE" + +systemctl start "$SERVICE" + +echo +echo "==> Deployment complete" +echo " $INSTALL_DIR/car_ui" diff --git a/scripts/run.sh b/scripts/run.sh new file mode 100644 index 0000000..78abb50 --- /dev/null +++ b/scripts/run.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_DIR="$(cd -- "$SCRIPT_DIR/.." && pwd)" + +VENV_DIR="$PROJECT_DIR/.venv" +MAIN="$PROJECT_DIR/main.py" +LOG_FILE="$PROJECT_DIR/debug.log" + +if [[ ! -x "$VENV_DIR/bin/python3" ]]; then + echo "ERROR: Virtual environment not found." + echo "Run:" + echo " ./scripts/build.sh" + exit 1 +fi + +if [[ ! -f "$MAIN" ]]; then + echo "ERROR: main.py not found:" + echo " $MAIN" + exit 1 +fi + +export DISPLAY="${DISPLAY:-:0}" + +echo "==> Starting Car UI" +echo " DISPLAY=$DISPLAY" +echo " Python: $VENV_DIR/bin/python3" +echo + +cd "$PROJECT_DIR" + +"$VENV_DIR/bin/python3" "$MAIN" 2>&1 | tee "$LOG_FILE" diff --git a/setup_venv.sh b/setup_venv.sh deleted file mode 100755 index 6c75703..0000000 --- a/setup_venv.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -python3 -m venv ./.venv -./.venv/bin/pip install -r ./requirements.txt