2026-05-07 15:10:01 +02:00
|
|
|
|
|
|
|
|
|
|
#!/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() {
|
2026-05-08 20:51:50 +02:00
|
|
|
|
if [ -x "${VENV_DIR}/bin/python" ]; then
|
2026-05-07 15:10:01 +02:00
|
|
|
|
warn "venv existiert bereits unter '${VENV_DIR}' – wird übersprungen."
|
|
|
|
|
|
return 0
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2026-05-08 20:51:50 +02:00
|
|
|
|
if [ -d "$VENV_DIR" ]; then
|
|
|
|
|
|
warn "'${VENV_DIR}' existiert, ist aber kaputt – wird neu erstellt."
|
|
|
|
|
|
rm -rf "$VENV_DIR"
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2026-05-07 15:10:01 +02:00
|
|
|
|
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"
|