#!/usr/bin/env bash set -euo pipefail # Farben für lesbare Ausgabe RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color info() { echo -e "${GREEN}[INFO]${NC} $1"; } warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } error() { echo -e "${RED}[ERROR]${NC} $1" >&2; } REQUIRED_MAJOR=3 REQUIRED_MINOR=11 check_python() { # 1. Existiert python3 überhaupt? if ! command -v python3 &> /dev/null; then error "python3 ist nicht installiert!" error "Installiere es z.B. mit: sudo apt install python3 python3-venv" exit 1 fi # 2. Version auslesen local py_version py_version=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")') local py_major="${py_version%.*}" local py_minor="${py_version#*.}" info "Gefundene Python-Version: ${py_version}" # 3. Vergleichen if [ "$py_major" -lt "$REQUIRED_MAJOR" ] || \ { [ "$py_major" -eq "$REQUIRED_MAJOR" ] && [ "$py_minor" -lt "$REQUIRED_MINOR" ]; }; then error "Python ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+ erforderlich, gefunden: ${py_version}" exit 1 fi } check_venv_module() { if ! python3 -c "import venv" &> /dev/null; then error "Das 'venv' Modul fehlt!" error "Auf Debian/Ubuntu: sudo apt install python3-venv" exit 1 fi } VENV_DIR=".venv" create_venv() { if [ -d "$VENV_DIR" ]; then warn "venv existiert bereits unter '${VENV_DIR}' – wird übersprungen." return 0 fi info "Erstelle virtuelle Umgebung in '${VENV_DIR}'..." python3 -m venv "$VENV_DIR" info "venv erfolgreich erstellt." } REQUIREMENTS_FILE="requirements.txt" install_dependencies() { if [ ! -f "$REQUIREMENTS_FILE" ]; then error "Datei '${REQUIREMENTS_FILE}' nicht gefunden!" exit 1 fi info "Aktiviere venv und installiere Dependencies..." # venv-Python direkt verwenden (ohne activate) "${VENV_DIR}/bin/pip" install --upgrade pip "${VENV_DIR}/bin/pip" install -r "$REQUIREMENTS_FILE" info "Dependencies installiert." } # --- Hauptablauf --- info "Starte Setup für Pelican-Projekt..." check_python check_venv_module create_venv install_dependencies info "Setup abgeschlossen! 🎉" info "" info "Aktiviere das venv mit:" info " source ${VENV_DIR}/bin/activate" info "" info "Dann kannst du loslegen mit:" info " pelican-quickstart"