From ba772da50c855bce1e255e00f3abd7c31f3c6abe Mon Sep 17 00:00:00 2001 From: MaksTinyWorkshop Date: Thu, 26 Mar 2026 18:31:38 +0100 Subject: [PATCH] =?UTF-8?q?fix(scripts):=20ignorer=20le=20bruit=20du=20buf?= =?UTF-8?q?fer=20expect=20avant=20l'en-t=C3=AAte=20CSV?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/load-global-secrets.sh | 15 ++++++++++----- scripts/sync-service-secrets.sh | 11 +++++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/scripts/load-global-secrets.sh b/scripts/load-global-secrets.sh index e325816..1ff153e 100755 --- a/scripts/load-global-secrets.sh +++ b/scripts/load-global-secrets.sh @@ -27,7 +27,6 @@ _load_global_secrets() { fi echo "Chargement des secrets globaux..." >&2 - echo "DEBUG: SECRETS_KDBX=$SECRETS_KDBX" >&2 # Export CSV complet — une seule ouverture du coffre local csv @@ -47,13 +46,19 @@ EOF return 1 } - echo "DEBUG: csv length=${#csv}" >&2 - echo "DEBUG: csv first 100 chars=${csv:0:100}" >&2 # Parser le CSV avec python3 — gère les champs multilignes et les virgules dans les valeurs + # On cherche la ligne d'en-tête CSV pour ignorer le bruit du buffer expect local pairs pairs=$(printf '%s' "$csv" | python3 -c " -import sys, csv, re -reader = csv.DictReader(sys.stdin) +import sys, csv, re, io + +raw = sys.stdin.read() +# Trouver la ligne d'en-tête CSV +start = raw.find('\"Group\"') +if start == -1: + sys.exit(0) +clean = raw[start:] +reader = csv.DictReader(io.StringIO(clean)) for row in reader: group = row.get('Group', '') title = row.get('Title', '') diff --git a/scripts/sync-service-secrets.sh b/scripts/sync-service-secrets.sh index 75efb78..063890d 100755 --- a/scripts/sync-service-secrets.sh +++ b/scripts/sync-service-secrets.sh @@ -58,10 +58,17 @@ EOF } # Parser le CSV avec python3 — gère les champs multilignes et les virgules dans les valeurs + # On cherche la ligne d'en-tête CSV pour ignorer le bruit du buffer expect local rendered_lines rendered_lines=$(printf '%s' "$csv" | python3 -c " -import sys, csv, re -reader = csv.DictReader(sys.stdin) +import sys, csv, re, io + +raw = sys.stdin.read() +start = raw.find('\"Group\"') +if start == -1: + sys.exit(0) +clean = raw[start:] +reader = csv.DictReader(io.StringIO(clean)) for row in reader: group = row.get('Group', '') title = row.get('Title', '')