97 lines
2.3 KiB
Bash
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"
|