fix(deploy): parser .env.docker robuste (source crashait sur quote non fermée)
Some checks failed
CI / Deploy production (on server) (push) Has been cancelled
CI / Lint, Unit Tests & Build (push) Has been cancelled

Remplace `source .env.docker` par un parse ligne par ligne qui ne crashe pas
quand une valeur contient un guillemet mal fermé (erreur: unexpected EOF
while looking for matching "). Les variables valides sont quand même exportées.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Antigravity
2026-06-28 09:41:11 +00:00
parent 1fc790f0c7
commit a1399a3d7b

View File

@@ -64,12 +64,28 @@ EXPECTED_COMMIT="${EXPECTED_COMMIT:-}"
load_env_docker() {
local env_file="$ROOT/.env.docker"
if [ -f "$env_file" ]; then
set -a
# shellcheck disable=SC1090
source "$env_file"
set +a
fi
[ -f "$env_file" ] || return 0
# Parse ligne par ligne (ne crashe pas sur une valeur avec quote mal fermée,
# contrairement à `source` qui exécute le fichier comme du bash).
local line key val
while IFS= read -r line || [ -n "$line" ]; do
case "$line" in
''|\#*) continue ;; # vide / commentaire
*=*) ;; # doit contenir =
*) continue ;;
esac
key="${line%%=*}"
val="${line#*=}"
# strip les guillemets entourants seulement s'ils sont équilibrés
case "$val" in
\"*\") val="${val#\"}"; val="${val%\"}" ;;
\'*\') val="${val#\'}"; val="${val%\'}" ;;
esac
# valide le nom de variable (alnum + underscore, commence par une lettre)
case "$key" in
[A-Za-z_]*|[A-Za-z_]*) export "$key=$val" ;;
esac
done < "$env_file"
}
wait_for_postgres() {