ai-lsc/run.sh

66 lines
2.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# ──────────────────────────────────────────────────────────────
# AI-LSC v3.0 — Quick launch script
#
# Usage:
# bash run.sh # activates venv, launches GUI
# bash run.sh --headless # activates venv, runs without GUI
# ──────────────────────────────────────────────────────────────
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_DIR="${SCRIPT_DIR}/.venv"
VENV_PYTHON="${VENV_DIR}/bin/python"
# ── Load .env for AI_LSC_BASE_DIR ────────────────────────────────
_ENV_FILE="${SCRIPT_DIR}/.env"
if [ -f "$_ENV_FILE" ]; then
set -a # auto-export all variables
source "$_ENV_FILE"
set +a
fi
# ── Ensure venv exists ────────────────────────────────────────
if [ ! -f "$VENV_PYTHON" ]; then
echo "[ERROR] Virtual environment not found at ${VENV_DIR}"
echo " Run first: bash bootstrap.sh"
exit 1
fi
# ── Detect stale venv (Python version mismatch after pacman upgrade)
if [ -f "${VENV_DIR}/.python-version-stamp" ]; then
STAMP="$(cat "${VENV_DIR}/.python-version-stamp")"
SYS_VER="$(python3 -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}')")"
if [ "$STAMP" != "$SYS_VER" ]; then
echo "[WARN] Virtual environment is stale (venv: ${STAMP}, system: ${SYS_VER})"
echo " Run: bash bootstrap.sh"
exit 1
fi
fi
# ── Check for leftover ~/.local/bin/ai-lsc from old installs
STALE_BIN="${HOME}/.local/bin/ai-lsc"
if [ -f "$STALE_BIN" ]; then
echo "[WARN] Found stale entry-point at ${STALE_BIN}"
echo " This is from a previous pip/pipx install. Remove it:"
echo " rm -f ${STALE_BIN}"
echo ""
fi
# ── Launch ────────────────────────────────────────────────────
echo " Base dir: ${AI_LSC_BASE_DIR:-/mnt/AI}"
echo " Project : ${SCRIPT_DIR}"
echo ""
if [ "${1:-}" = "--headless" ]; then
exec "$VENV_PYTHON" -c "
import sys
sys.path.insert(0, '${SCRIPT_DIR}/src')
from ai_lsc.constants import APP_DISPLAY_NAME, CANONICAL_BASE_DIR
print(f'{APP_DISPLAY_NAME}')
print(f' Base dir: {CANONICAL_BASE_DIR}')
"
else
exec "$VENV_PYTHON" "${SCRIPT_DIR}/ai_lsc.py" "$@"
fi