fix: améliorer la gestion des erreurs et le débogage du script Python
- ajout de try/except pour capturer toutes les erreurs - logs de débogage améliorés (répertoire actuel, contenu) - meilleure gestion des fins de ligne - affichage de la traceback en cas d'erreur
This commit is contained in:
@@ -120,109 +120,133 @@ RUN echo "✅ Page team.tsx créée"
|
|||||||
|
|
||||||
# Script Python pour ajouter le lien Équipe dans Navigation.tsx (évite les doublons)
|
# Script Python pour ajouter le lien Équipe dans Navigation.tsx (évite les doublons)
|
||||||
RUN cat > /tmp/add_team_link.py << 'PYEOF'
|
RUN cat > /tmp/add_team_link.py << 'PYEOF'
|
||||||
|
#!/usr/bin/env python3
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
import os
|
import os
|
||||||
|
|
||||||
f = ".techradar/src/components/Navigation/Navigation.tsx"
|
f = ".techradar/src/components/Navigation/Navigation.tsx"
|
||||||
|
|
||||||
# Vérifier que le fichier existe
|
try:
|
||||||
if not os.path.exists(f):
|
# Vérifier que le fichier existe
|
||||||
print(f"❌ Fichier {f} introuvable")
|
if not os.path.exists(f):
|
||||||
sys.exit(1)
|
print(f"❌ Fichier {f} introuvable", file=sys.stderr)
|
||||||
|
print(f"📁 Répertoire actuel: {os.getcwd()}", file=sys.stderr)
|
||||||
|
print(f"📁 Contenu du répertoire .techradar/src/components/:", file=sys.stderr)
|
||||||
|
if os.path.exists(".techradar/src/components"):
|
||||||
|
for item in os.listdir(".techradar/src/components"):
|
||||||
|
print(f" - {item}", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
with open(f, 'r', encoding='utf-8') as file:
|
with open(f, 'r', encoding='utf-8') as file:
|
||||||
content = file.read()
|
content = file.read()
|
||||||
|
|
||||||
# Vérifier si le lien existe déjà (compter les occurrences)
|
# Vérifier si le lien existe déjà (compter les occurrences)
|
||||||
team_link_count = len(re.findall(r'href=["\']/team["\']', content))
|
team_link_count = len(re.findall(r'href=["\']/team["\']', content))
|
||||||
if team_link_count > 0:
|
if team_link_count > 0:
|
||||||
print(f"ℹ️ Lien Équipe déjà présent ({team_link_count} occurrence(s))")
|
print(f"ℹ️ Lien Équipe déjà présent ({team_link_count} occurrence(s))")
|
||||||
# Si plusieurs occurrences, supprimer les doublons
|
# Si plusieurs occurrences, supprimer les doublons
|
||||||
if team_link_count > 1:
|
if team_link_count > 1:
|
||||||
print("⚠️ Détection de doublons, nettoyage...")
|
print("⚠️ Détection de doublons, nettoyage...")
|
||||||
lines = content.splitlines(keepends=True)
|
lines = content.splitlines(keepends=True)
|
||||||
if not lines or lines[-1] and not lines[-1].endswith('\n'):
|
if lines and not lines[-1].endswith('\n'):
|
||||||
lines[-1] = lines[-1] + '\n'
|
lines[-1] = lines[-1] + '\n'
|
||||||
|
|
||||||
new_lines = []
|
new_lines = []
|
||||||
in_team_link = False
|
in_team_link = False
|
||||||
team_link_added = False
|
team_link_added = False
|
||||||
skip_until_close = False
|
skip_until_close = False
|
||||||
|
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if 'href="/team"' in line or "href='/team'" in line:
|
if 'href="/team"' in line or "href='/team'" in line:
|
||||||
if not team_link_added:
|
if not team_link_added:
|
||||||
# Garder la première occurrence
|
# Garder la première occurrence
|
||||||
in_team_link = True
|
in_team_link = True
|
||||||
team_link_added = True
|
team_link_added = True
|
||||||
new_lines.append(line)
|
new_lines.append(line)
|
||||||
else:
|
else:
|
||||||
# Ignorer les doublons
|
# Ignorer les doublons
|
||||||
skip_until_close = True
|
skip_until_close = True
|
||||||
|
continue
|
||||||
|
elif skip_until_close:
|
||||||
|
if '</li>' in line:
|
||||||
|
skip_until_close = False
|
||||||
continue
|
continue
|
||||||
elif skip_until_close:
|
elif in_team_link:
|
||||||
if '</li>' in line:
|
new_lines.append(line)
|
||||||
skip_until_close = False
|
if '</li>' in line:
|
||||||
continue
|
in_team_link = False
|
||||||
elif in_team_link:
|
else:
|
||||||
new_lines.append(line)
|
new_lines.append(line)
|
||||||
if '</li>' in line:
|
|
||||||
in_team_link = False
|
|
||||||
else:
|
|
||||||
new_lines.append(line)
|
|
||||||
|
|
||||||
|
with open(f, 'w', encoding='utf-8') as file:
|
||||||
|
file.writelines(new_lines)
|
||||||
|
print("✅ Doublons supprimés")
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
|
# Si le lien n'existe pas, l'ajouter
|
||||||
|
lines = content.splitlines(keepends=True)
|
||||||
|
if lines and not lines[-1].endswith('\n'):
|
||||||
|
lines[-1] = lines[-1] + '\n'
|
||||||
|
|
||||||
|
insert_idx = -1
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
if 'href="/overview"' in line:
|
||||||
|
for j in range(i, min(i+10, len(lines))):
|
||||||
|
if '</Link>' in lines[j] and j+1 < len(lines) and '</li>' in lines[j+1]:
|
||||||
|
insert_idx = j + 2
|
||||||
|
break
|
||||||
|
break
|
||||||
|
|
||||||
|
if insert_idx > 0:
|
||||||
|
new_lines = lines[:insert_idx] + [
|
||||||
|
' <li className={styles.item}>\n',
|
||||||
|
' <Link href="/team">\n',
|
||||||
|
' <span className={styles.label}>👥 Équipe</span>\n',
|
||||||
|
' </Link>\n',
|
||||||
|
' </li>\n'
|
||||||
|
] + lines[insert_idx:]
|
||||||
with open(f, 'w', encoding='utf-8') as file:
|
with open(f, 'w', encoding='utf-8') as file:
|
||||||
file.writelines(new_lines)
|
file.writelines(new_lines)
|
||||||
print("✅ Doublons supprimés")
|
print("✅ Navigation.tsx modifié - lien Équipe ajouté")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
else:
|
||||||
# Si le lien n'existe pas, l'ajouter
|
print("❌ Impossible de trouver l'emplacement pour insérer le lien", file=sys.stderr)
|
||||||
lines = content.splitlines(keepends=True)
|
print("📄 Recherche de 'href=\"/overview\"' dans le fichier...", file=sys.stderr)
|
||||||
if not lines or lines[-1] and not lines[-1].endswith('\n'):
|
for i, line in enumerate(lines[:30]):
|
||||||
lines[-1] = lines[-1] + '\n'
|
if 'overview' in line.lower():
|
||||||
|
print(f" Ligne {i+1}: {line.strip()[:80]}", file=sys.stderr)
|
||||||
insert_idx = -1
|
sys.exit(1)
|
||||||
for i, line in enumerate(lines):
|
except Exception as e:
|
||||||
if 'href="/overview"' in line:
|
print(f"❌ Erreur Python: {e}", file=sys.stderr)
|
||||||
for j in range(i, min(i+10, len(lines))):
|
import traceback
|
||||||
if '</Link>' in lines[j] and j+1 < len(lines) and '</li>' in lines[j+1]:
|
traceback.print_exc(file=sys.stderr)
|
||||||
insert_idx = j + 2
|
|
||||||
break
|
|
||||||
break
|
|
||||||
|
|
||||||
if insert_idx > 0:
|
|
||||||
new_lines = lines[:insert_idx] + [
|
|
||||||
' <li className={styles.item}>\n',
|
|
||||||
' <Link href="/team">\n',
|
|
||||||
' <span className={styles.label}>👥 Équipe</span>\n',
|
|
||||||
' </Link>\n',
|
|
||||||
' </li>\n'
|
|
||||||
] + lines[insert_idx:]
|
|
||||||
with open(f, 'w', encoding='utf-8') as file:
|
|
||||||
file.writelines(new_lines)
|
|
||||||
print("✅ Navigation.tsx modifié - lien Équipe ajouté")
|
|
||||||
sys.exit(0)
|
|
||||||
else:
|
|
||||||
print("❌ Impossible de trouver l'emplacement pour insérer le lien")
|
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
PYEOF
|
PYEOF
|
||||||
|
|
||||||
# Modifier Navigation.tsx pour ajouter le lien Équipe (le script Python gère les doublons)
|
# Modifier Navigation.tsx pour ajouter le lien Équipe (le script Python gère les doublons)
|
||||||
RUN echo "🔧 Modification de Navigation.tsx pour le lien Équipe..." && \
|
RUN echo "🔧 Modification de Navigation.tsx pour le lien Équipe..." && \
|
||||||
python3 /tmp/add_team_link.py || (echo "❌ Erreur lors de l'exécution du script Python" && exit 1) && \
|
echo "📁 Vérification de l'emplacement du fichier..." && \
|
||||||
team_count=$$(grep -c 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx 2>/dev/null || echo "0") && \
|
ls -la .techradar/src/components/Navigation/ 2>/dev/null || echo "⚠️ Répertoire Navigation non trouvé" && \
|
||||||
if [ "$$team_count" -eq "1" ]; then \
|
python3 /tmp/add_team_link.py 2>&1 || (echo "❌ Erreur lors de l'exécution du script Python" && python3 -c "import traceback; traceback.print_exc()" 2>&1 || true && exit 1) && \
|
||||||
echo "✅ Lien Équipe présent (1 occurrence)"; \
|
if [ -f .techradar/src/components/Navigation/Navigation.tsx ]; then \
|
||||||
elif [ "$$team_count" -gt "1" ]; then \
|
team_count=$$(grep -c 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx 2>/dev/null || echo "0") && \
|
||||||
echo "⚠️ Plusieurs occurrences détectées ($$team_count), relance du nettoyage..."; \
|
echo "📊 Nombre d'occurrences trouvées: $$team_count" && \
|
||||||
python3 /tmp/add_team_link.py || (echo "❌ Erreur lors du nettoyage" && exit 1); \
|
if [ "$$team_count" -eq "1" ]; then \
|
||||||
final_count=$$(grep -c 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx 2>/dev/null || echo "0") && \
|
echo "✅ Lien Équipe présent (1 occurrence)"; \
|
||||||
echo "✅ Après nettoyage: $$final_count occurrence(s)"; \
|
elif [ "$$team_count" -gt "1" ]; then \
|
||||||
|
echo "⚠️ Plusieurs occurrences détectées ($$team_count), relance du nettoyage..."; \
|
||||||
|
python3 /tmp/add_team_link.py 2>&1 || (echo "❌ Erreur lors du nettoyage" && exit 1); \
|
||||||
|
final_count=$$(grep -c 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx 2>/dev/null || echo "0") && \
|
||||||
|
echo "✅ Après nettoyage: $$final_count occurrence(s)"; \
|
||||||
|
else \
|
||||||
|
echo "❌ Lien Équipe non trouvé après modification"; \
|
||||||
|
echo "📄 Aperçu de Navigation.tsx (premières 50 lignes):"; \
|
||||||
|
head -50 .techradar/src/components/Navigation/Navigation.tsx || true; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
else \
|
else \
|
||||||
echo "❌ Lien Équipe non trouvé après modification"; \
|
echo "❌ Fichier Navigation.tsx introuvable"; \
|
||||||
echo "📄 Contenu de Navigation.tsx:"; \
|
|
||||||
cat .techradar/src/components/Navigation/Navigation.tsx; \
|
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user