install-client.sh 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #!/usr/bin/env bash
  2. # ============================================================================
  3. # Trixy Installer — Bootstrap-Script
  4. #
  5. # Entpackt den Installer, erstellt ein temporaeres venv und startet die TUI.
  6. # ============================================================================
  7. set -euo pipefail
  8. # --- Eingebettete Werte ---
  9. MODE="client"
  10. VERSION="1.0.0"
  11. SOURCE_TAR="trixy-client-1.0.0.tar.gz"
  12. INSTALLER_TAR="trixy-installer-client-1.0.0.tar.gz"
  13. # --- Farben ---
  14. RED='\033[0;31m'
  15. GREEN='\033[0;32m'
  16. YELLOW='\033[1;33m'
  17. NC='\033[0m'
  18. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  19. TEMP_DIR=""
  20. cleanup() {
  21. if [[ -n "${TEMP_DIR}" && -d "${TEMP_DIR}" ]]; then
  22. echo -e "${YELLOW}Raeume auf...${NC}"
  23. rm -rf "${TEMP_DIR}"
  24. fi
  25. }
  26. trap cleanup EXIT
  27. echo ""
  28. echo -e "${GREEN}========================================"
  29. echo " Trixy Installer v${VERSION} [${MODE}]"
  30. echo -e "========================================${NC}"
  31. echo ""
  32. # 1. Pruefe ob tar-Dateien vorhanden
  33. if [[ ! -f "${SCRIPT_DIR}/${SOURCE_TAR}" ]]; then
  34. echo -e "${RED}FEHLER: ${SOURCE_TAR} nicht gefunden${NC}"
  35. exit 1
  36. fi
  37. if [[ ! -f "${SCRIPT_DIR}/${INSTALLER_TAR}" ]]; then
  38. echo -e "${RED}FEHLER: ${INSTALLER_TAR} nicht gefunden${NC}"
  39. exit 1
  40. fi
  41. # 2. Python >= 3.10 sicherstellen
  42. echo "Pruefe Python-Version..."
  43. PYTHON_BIN=""
  44. for py in python3.12 python3.11 python3.10 python3; do
  45. if command -v "${py}" >/dev/null 2>&1; then
  46. py_minor=$("${py}" -c "import sys; print(sys.version_info.minor)")
  47. if [[ "${py_minor}" -ge 10 ]]; then
  48. PYTHON_BIN="${py}"
  49. break
  50. fi
  51. fi
  52. done
  53. if [[ -z "${PYTHON_BIN}" ]]; then
  54. echo -e "${YELLOW}Python >= 3.10 nicht gefunden. Versuche Installation...${NC}"
  55. if command -v apt-get >/dev/null 2>&1; then
  56. sudo apt-get update -qq
  57. sudo apt-get install -y -qq python3 python3-venv python3-pip
  58. PYTHON_BIN="python3"
  59. else
  60. echo -e "${RED}FEHLER: Python >= 3.10 wird benoetigt${NC}"
  61. exit 1
  62. fi
  63. fi
  64. echo " Verwende: ${PYTHON_BIN} ($(${PYTHON_BIN} --version 2>&1))"
  65. # 3. Installer-tar in temp-Verzeichnis entpacken
  66. TEMP_DIR="$(mktemp -d)"
  67. echo "Entpacke Installer nach ${TEMP_DIR}..."
  68. tar xzf "${SCRIPT_DIR}/${INSTALLER_TAR}" -C "${TEMP_DIR}"
  69. # 4. Installer-venv erstellen
  70. INST_VENV="${TEMP_DIR}/installer-venv"
  71. echo "Erstelle Installer-venv..."
  72. "${PYTHON_BIN}" -m venv "${INST_VENV}"
  73. "${INST_VENV}/bin/pip" install --upgrade pip -q 2>/dev/null
  74. "${INST_VENV}/bin/pip" install -r "${TEMP_DIR}/trixy_installer/requirements.txt" -q
  75. # 5. TUI starten
  76. echo ""
  77. echo -e "${GREEN}Starte Installer-TUI...${NC}"
  78. echo ""
  79. PYTHONPATH="${TEMP_DIR}" "${INST_VENV}/bin/python" -m trixy_installer \
  80. --mode "${MODE}" \
  81. --version "${VERSION}" \
  82. --source-archive "${SCRIPT_DIR}/${SOURCE_TAR}"
  83. echo ""
  84. echo -e "${GREEN}Installer beendet.${NC}"