#!/usr/bin/env bash set -euo pipefail # Optionaler Dev-Installationsmodus dev_mode=false if [[ "${1:-}" == "-dev" ]]; then dev_mode=true fi shopt -s nullglob # Wähle die passende Requirements-Datei pattern='requirements.txt' msg_hint='src/*/requirements.txt' if $dev_mode; then pattern='requirements.dev.txt' msg_hint='src/*/requirements.dev.txt' fi req_files=(src/*/"$pattern") if ((${#req_files[@]} == 0)); then echo "Keine Requirements-Dateien gefunden unter '$msg_hint'" >&2 exit 1 fi tmp_combined="$(mktemp)" trap 'rm -f "$tmp_combined"' EXIT # Kombiniere, filtere Kommentare/Whitespace, entferne cpl-*, dedupliziere. awk ' function trim(s){ sub(/^[[:space:]]+/,"",s); sub(/[[:space:]]+$/,"",s); return s } { line=$0 if (line ~ /^[[:space:]]*#/) next sub(/#[^!].*$/,"",line) line=trim(line) if (line == "") next e = line sub(/^-e[[:space:]]+/,"",e) token = e sub(/\[.*/,"",token) n = split(token, a, /[<>=!~;@[:space:]]/) name = tolower(a[1]) if (name ~ /^cpl-/) next print line } ' "${req_files[@]}" | sort -u > "$tmp_combined" if ! [ -s "$tmp_combined" ]; then echo "Nichts zu installieren nach dem Entfernen von cpl-* Paketen." >&2 exit 0 fi echo "Installiere Abhängigkeiten (ohne cpl-*) aus:" printf ' - %s\n' "${req_files[@]}" echo echo "Finale Menge zur Installation:" cat "$tmp_combined" echo python -m pip install -r "$tmp_combined"