#!/usr/bin/env bash # ============================================================================ # Trixy Installer — Bootstrap-Script # # Entpackt den Installer, erstellt ein temporaeres venv und startet die TUI. # ============================================================================ set -euo pipefail # --- Eingebettete Werte --- MODE="server" VERSION="1.0.0" SOURCE_TAR="trixy-server-1.0.0.tar.gz" INSTALLER_TAR="trixy-installer-server-1.0.0.tar.gz" # --- Farben --- RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" TEMP_DIR="" cleanup() { if [[ -n "${TEMP_DIR}" && -d "${TEMP_DIR}" ]]; then echo -e "${YELLOW}Raeume auf...${NC}" rm -rf "${TEMP_DIR}" fi } trap cleanup EXIT echo "" echo -e "${GREEN}========================================" echo " Trixy Installer v${VERSION} [${MODE}]" echo -e "========================================${NC}" echo "" # 1. Pruefe ob tar-Dateien vorhanden if [[ ! -f "${SCRIPT_DIR}/${SOURCE_TAR}" ]]; then echo -e "${RED}FEHLER: ${SOURCE_TAR} nicht gefunden${NC}" exit 1 fi if [[ ! -f "${SCRIPT_DIR}/${INSTALLER_TAR}" ]]; then echo -e "${RED}FEHLER: ${INSTALLER_TAR} nicht gefunden${NC}" exit 1 fi # 2. Python >= 3.10 sicherstellen echo "Pruefe Python-Version..." PYTHON_BIN="" for py in python3.12 python3.11 python3.10 python3; do if command -v "${py}" >/dev/null 2>&1; then py_minor=$("${py}" -c "import sys; print(sys.version_info.minor)") if [[ "${py_minor}" -ge 10 ]]; then PYTHON_BIN="${py}" break fi fi done if [[ -z "${PYTHON_BIN}" ]]; then echo -e "${YELLOW}Python >= 3.10 nicht gefunden. Versuche Installation...${NC}" if command -v apt-get >/dev/null 2>&1; then sudo apt-get update -qq sudo apt-get install -y -qq python3 python3-venv python3-pip PYTHON_BIN="python3" else echo -e "${RED}FEHLER: Python >= 3.10 wird benoetigt${NC}" exit 1 fi fi echo " Verwende: ${PYTHON_BIN} ($(${PYTHON_BIN} --version 2>&1))" # 3. Installer-tar in temp-Verzeichnis entpacken TEMP_DIR="$(mktemp -d)" echo "Entpacke Installer nach ${TEMP_DIR}..." tar xzf "${SCRIPT_DIR}/${INSTALLER_TAR}" -C "${TEMP_DIR}" # 4. Installer-venv erstellen INST_VENV="${TEMP_DIR}/installer-venv" echo "Erstelle Installer-venv..." "${PYTHON_BIN}" -m venv "${INST_VENV}" "${INST_VENV}/bin/pip" install --upgrade pip -q 2>/dev/null "${INST_VENV}/bin/pip" install -r "${TEMP_DIR}/trixy_installer/requirements.txt" -q # 5. TUI starten echo "" echo -e "${GREEN}Starte Installer-TUI...${NC}" echo "" PYTHONPATH="${TEMP_DIR}" "${INST_VENV}/bin/python" -m trixy_installer \ --mode "${MODE}" \ --version "${VERSION}" \ --source-archive "${SCRIPT_DIR}/${SOURCE_TAR}" echo "" echo -e "${GREEN}Installer beendet.${NC}"