Files
cpl/install.sh
edraft 9c9bbf1760
Some checks failed
Test before pr merge / test (pull_request) Failing after 8s
Test before pr merge / test-lint (pull_request) Successful in 8s
Fixed test action installation
2026-01-16 16:16:04 +01:00

64 lines
1.4 KiB
Bash

#!/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"