danielnagel-site/setup.sh

103 lines
2.5 KiB
Bash
Raw Normal View History

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"