car_ui/scripts/build.sh
2026-09-15 15:53:41 +03:00

97 lines
2.3 KiB
Bash

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