fix: améliorer le script Python pour supprimer TOUS les doublons avant d'ajouter
- le script supprime maintenant TOUS les liens Équipe existants (même s'il n'y en a qu'un) - puis ajoute un seul lien Équipe au bon endroit - vérifie qu'il n'y a qu'un seul lien après l'opération - évite les doublons même si le script s'exécute plusieurs fois
This commit is contained in:
@@ -118,7 +118,7 @@ export default TeamPage;
|
|||||||
EOF
|
EOF
|
||||||
RUN echo "✅ Page team.tsx créée"
|
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 (supprime TOUS les doublons)
|
||||||
RUN cat > /tmp/add_team_link.py << 'PYEOF'
|
RUN cat > /tmp/add_team_link.py << 'PYEOF'
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
import sys
|
import sys
|
||||||
@@ -131,64 +131,52 @@ try:
|
|||||||
# Vérifier que le fichier existe
|
# Vérifier que le fichier existe
|
||||||
if not os.path.exists(f):
|
if not os.path.exists(f):
|
||||||
print(f"❌ Fichier {f} introuvable", file=sys.stderr)
|
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)
|
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)
|
# ÉTAPE 1: Supprimer TOUS les liens Équipe existants (même s'il n'y en a qu'un)
|
||||||
team_link_count = len(re.findall(r'href=["\']/team["\']', content))
|
print("🧹 Nettoyage de tous les liens Équipe existants...")
|
||||||
if team_link_count > 0:
|
|
||||||
print(f"ℹ️ Lien Équipe déjà présent ({team_link_count} occurrence(s))")
|
|
||||||
# Si plusieurs occurrences, supprimer les doublons
|
|
||||||
if team_link_count > 1:
|
|
||||||
print("⚠️ Détection de doublons, nettoyage...")
|
|
||||||
lines = content.splitlines(keepends=True)
|
|
||||||
if lines and not lines[-1].endswith('\n'):
|
|
||||||
lines[-1] = lines[-1] + '\n'
|
|
||||||
|
|
||||||
new_lines = []
|
|
||||||
in_team_link = False
|
|
||||||
team_link_added = False
|
|
||||||
skip_until_close = False
|
|
||||||
|
|
||||||
for line in lines:
|
|
||||||
if 'href="/team"' in line or "href='/team'" in line:
|
|
||||||
if not team_link_added:
|
|
||||||
# Garder la première occurrence
|
|
||||||
in_team_link = True
|
|
||||||
team_link_added = True
|
|
||||||
new_lines.append(line)
|
|
||||||
else:
|
|
||||||
# Ignorer les doublons
|
|
||||||
skip_until_close = True
|
|
||||||
continue
|
|
||||||
elif skip_until_close:
|
|
||||||
if '</li>' in line:
|
|
||||||
skip_until_close = False
|
|
||||||
continue
|
|
||||||
elif in_team_link:
|
|
||||||
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)
|
lines = content.splitlines(keepends=True)
|
||||||
if lines 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 = []
|
||||||
|
skip_team_link = False
|
||||||
|
team_links_removed = 0
|
||||||
|
|
||||||
|
i = 0
|
||||||
|
while i < len(lines):
|
||||||
|
line = lines[i]
|
||||||
|
|
||||||
|
# Détecter le début d'un lien Équipe
|
||||||
|
if ('href="/team"' in line or "href='/team'" in line) and not skip_team_link:
|
||||||
|
skip_team_link = True
|
||||||
|
team_links_removed += 1
|
||||||
|
# Ignorer cette ligne et les lignes suivantes jusqu'à </li>
|
||||||
|
i += 1
|
||||||
|
continue
|
||||||
|
|
||||||
|
# Si on est dans un bloc Équipe à supprimer, ignorer jusqu'à </li>
|
||||||
|
if skip_team_link:
|
||||||
|
if '</li>' in line:
|
||||||
|
skip_team_link = False
|
||||||
|
i += 1
|
||||||
|
continue
|
||||||
|
|
||||||
|
new_lines.append(line)
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
if team_links_removed > 0:
|
||||||
|
print(f"✅ {team_links_removed} lien(s) Équipe supprimé(s)")
|
||||||
|
|
||||||
|
# ÉTAPE 2: Ajouter un seul lien Équipe au bon endroit
|
||||||
|
content_cleaned = ''.join(new_lines)
|
||||||
|
lines = content_cleaned.splitlines(keepends=True)
|
||||||
|
if lines and not lines[-1].endswith('\n'):
|
||||||
|
lines[-1] = lines[-1] + '\n'
|
||||||
|
|
||||||
insert_idx = -1
|
insert_idx = -1
|
||||||
for i, line in enumerate(lines):
|
for i, line in enumerate(lines):
|
||||||
if 'href="/overview"' in line:
|
if 'href="/overview"' in line:
|
||||||
@@ -208,14 +196,20 @@ try:
|
|||||||
] + lines[insert_idx:]
|
] + 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("✅ Navigation.tsx modifié - lien Équipe ajouté")
|
|
||||||
sys.exit(0)
|
# Vérifier qu'il n'y a qu'un seul lien maintenant
|
||||||
|
with open(f, 'r', encoding='utf-8') as file:
|
||||||
|
final_content = file.read()
|
||||||
|
final_count = len(re.findall(r'href=["\']/team["\']', final_content))
|
||||||
|
|
||||||
|
if final_count == 1:
|
||||||
|
print("✅ Navigation.tsx modifié - 1 seul lien Équipe présent")
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
print(f"⚠️ Attention: {final_count} lien(s) Équipe détecté(s) après modification", file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
print("❌ Impossible de trouver l'emplacement pour insérer le lien", file=sys.stderr)
|
print("❌ Impossible de trouver l'emplacement pour insérer le lien", file=sys.stderr)
|
||||||
print("📄 Recherche de 'href=\"/overview\"' dans le fichier...", file=sys.stderr)
|
|
||||||
for i, line in enumerate(lines[:30]):
|
|
||||||
if 'overview' in line.lower():
|
|
||||||
print(f" Ligne {i+1}: {line.strip()[:80]}", file=sys.stderr)
|
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"❌ Erreur Python: {e}", file=sys.stderr)
|
print(f"❌ Erreur Python: {e}", file=sys.stderr)
|
||||||
|
|||||||
Reference in New Issue
Block a user