fix: amélioration script create-team-page avec iframe et awk

- Page Next.js utilise iframe pour charger team.html (plus simple)
- Utilisation d'awk pour modification Navigation.tsx (plus robuste)
- Meilleure gestion des erreurs
This commit is contained in:
syoul
2025-12-06 22:15:05 +01:00
parent 7bc6c695b8
commit df4948c19a

View File

@@ -6,56 +6,31 @@ TECHRADAR_DIR=".techradar"
TEAM_PAGE="$TECHRADAR_DIR/src/pages/team.tsx"
NAV_FILE="$TECHRADAR_DIR/src/components/Navigation/Navigation.tsx"
# Créer la page team.tsx
# Créer la page team.tsx qui charge team.html via iframe (plus simple et fiable)
if [ ! -f "$TEAM_PAGE" ]; then
mkdir -p "$(dirname "$TEAM_PAGE")"
cat > "$TEAM_PAGE" << 'EOF'
import Head from "next/head";
import { useEffect } from "react";
import { CustomPage } from "@/pages/_app";
const TeamPage: CustomPage = () => {
useEffect(() => {
// Charger le contenu de team.html dans cette page
const loadTeamPage = async () => {
try {
const response = await fetch('/team.html');
if (response.ok) {
const html = await response.text();
const parser = new DOMParser();
const doc = parser.parseFromString(html, 'text/html');
const content = doc.body.innerHTML;
const container = document.getElementById('team-container');
if (container) {
container.innerHTML = content;
// Réexécuter les scripts
const scripts = container.querySelectorAll('script');
scripts.forEach(oldScript => {
const newScript = document.createElement('script');
Array.from(oldScript.attributes).forEach(attr => {
newScript.setAttribute(attr.name, attr.value);
});
newScript.textContent = oldScript.textContent;
oldScript.parentNode?.replaceChild(newScript, oldScript);
});
}
}
} catch (error) {
console.error('Erreur lors du chargement de team.html:', error);
}
};
loadTeamPage();
}, []);
return (
<>
<Head>
<title>Équipe & Technologies - Laplank</title>
</Head>
<div id="team-container" style={{ minHeight: '100vh' }}>
<div style={{ textAlign: 'center', padding: '40px' }}>
<p>Chargement de la page Équipe...</p>
</div>
<div style={{ width: '100%', height: '100vh', border: 'none', margin: 0, padding: 0 }}>
<iframe
src="/team.html"
style={{
width: '100%',
height: '100%',
border: 'none',
margin: 0,
padding: 0
}}
title="Équipe & Technologies"
/>
</div>
</>
);
@@ -63,7 +38,7 @@ const TeamPage: CustomPage = () => {
export default TeamPage;
EOF
echo "✅ Page team.tsx créée"
echo "✅ Page team.tsx créée (iframe)"
else
echo " Page team.tsx existe déjà"
fi
@@ -71,18 +46,28 @@ fi
# Modifier Navigation.tsx pour ajouter le lien
if [ -f "$NAV_FILE" ]; then
if ! grep -q 'href="/team"' "$NAV_FILE"; then
# Ajouter le lien après Overview
sed -i '/href="\/overview"/a\
<li className={styles.item}>\
<Link href="/team">\
<span className={styles.label}>👥 Équipe</span>\
</Link>\
</li>' "$NAV_FILE"
# Ajouter le lien après Overview, avant le commentaire
# Utiliser une approche plus robuste avec awk ou perl
awk '
/href="\/overview"/ {
print
getline
print
print " <li className={styles.item}>"
print " <Link href=\"/team\">"
print " <span className={styles.label}>👥 Équipe</span>"
print " </Link>"
print " </li>"
next
}
{ print }
' "$NAV_FILE" > "$NAV_FILE.tmp" && mv "$NAV_FILE.tmp" "$NAV_FILE"
echo "✅ Lien Équipe ajouté au composant Navigation"
else
echo " Lien Équipe déjà présent dans Navigation"
fi
else
echo "⚠️ Navigation.tsx non trouvé"
echo "⚠️ Navigation.tsx non trouvé: $NAV_FILE"
ls -la "$(dirname "$NAV_FILE")" || echo "Dossier non trouvé"
fi