#!/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"