refactor: réorganiser Dockerfiles et scripts par module
Réorganise la structure Docker pour plus de cohérence dans le monorepo. Chaque module (backend, docs) a maintenant ses propres Dockerfiles et scripts. Changements: - backend/docker/ : Dockerfile (prod) + dev.Dockerfile (hot reload) + init script - docs/docker/ : mkdocs.Dockerfile + pdf.Dockerfile - docs/scripts/ : generate-bdd-docs.py + generate-pdf-docs.py - Déplace docker-compose.yml dans backend/ - Supprime scripts obsolètes (fix-markdown-*.sh, remove-broken-links.sh) - Déplace .dockerignore à la racine - Met à jour Makefile avec nouveaux chemins Organisation finale: - backend/ : tout ce qui concerne l'API backend - docs/ : tout ce qui concerne la documentation - scripts/ : uniquement setup.sh (scripts généraux du projet)
This commit is contained in:
31
.dockerignore
Normal file
31
.dockerignore
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# Ignore backend files
|
||||||
|
backend/**
|
||||||
|
mobile/**
|
||||||
|
|
||||||
|
# Ignore git
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
|
||||||
|
# Ignore docker files
|
||||||
|
docker-compose.yml
|
||||||
|
*.dockerfile
|
||||||
|
|
||||||
|
# Ignore node_modules and build artifacts
|
||||||
|
node_modules/
|
||||||
|
dist/
|
||||||
|
build/
|
||||||
|
bin/
|
||||||
|
tmp/
|
||||||
|
|
||||||
|
# Ignore environment files
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
|
||||||
|
# Ignore IDE
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
|
||||||
|
# Ignore documentation build artifacts
|
||||||
|
site/
|
||||||
|
docs/generated/
|
||||||
|
output/
|
||||||
24
Makefile
24
Makefile
@@ -71,13 +71,13 @@ clean:
|
|||||||
docs-clean:
|
docs-clean:
|
||||||
@echo "$(YELLOW)Cleaning generated documentation...$(NC)"
|
@echo "$(YELLOW)Cleaning generated documentation...$(NC)"
|
||||||
@rm -rf docs/generated/
|
@rm -rf docs/generated/
|
||||||
@docker rmi roadwave-pdf-generator 2>/dev/null || true
|
@docker rmi roadwave-pdf-generator roadwave-mkdocs 2>/dev/null || true
|
||||||
@echo "$(GREEN)✓ Documentation cleaned$(NC)"
|
@echo "$(GREEN)✓ Documentation cleaned$(NC)"
|
||||||
|
|
||||||
## docker-up: Start all Docker services
|
## docker-up: Start all Docker services
|
||||||
docker-up:
|
docker-up:
|
||||||
@echo "$(BLUE)Starting Docker services...$(NC)"
|
@echo "$(BLUE)Starting Docker services...$(NC)"
|
||||||
@docker compose up -d
|
@cd backend && docker compose up -d
|
||||||
@echo "$(GREEN)✓ Services started$(NC)"
|
@echo "$(GREEN)✓ Services started$(NC)"
|
||||||
@echo "$(YELLOW)API: http://localhost:8080$(NC)"
|
@echo "$(YELLOW)API: http://localhost:8080$(NC)"
|
||||||
@echo "$(YELLOW)Zitadel: http://localhost:8081$(NC)"
|
@echo "$(YELLOW)Zitadel: http://localhost:8081$(NC)"
|
||||||
@@ -86,12 +86,12 @@ docker-up:
|
|||||||
## docker-down: Stop all Docker services
|
## docker-down: Stop all Docker services
|
||||||
docker-down:
|
docker-down:
|
||||||
@echo "$(YELLOW)Stopping Docker services...$(NC)"
|
@echo "$(YELLOW)Stopping Docker services...$(NC)"
|
||||||
@docker compose down
|
@cd backend && docker compose down
|
||||||
@echo "$(GREEN)✓ Services stopped$(NC)"
|
@echo "$(GREEN)✓ Services stopped$(NC)"
|
||||||
|
|
||||||
## docker-logs: Show Docker logs
|
## docker-logs: Show Docker logs
|
||||||
docker-logs:
|
docker-logs:
|
||||||
@docker compose logs -f
|
@cd backend && docker compose logs -f
|
||||||
|
|
||||||
## migrate-up: Apply all migrations
|
## migrate-up: Apply all migrations
|
||||||
migrate-up:
|
migrate-up:
|
||||||
@@ -151,30 +151,34 @@ run-api:
|
|||||||
|
|
||||||
## docs-serve: Start documentation server (http://localhost:8000)
|
## docs-serve: Start documentation server (http://localhost:8000)
|
||||||
docs-serve:
|
docs-serve:
|
||||||
|
@echo "$(BLUE)Building MkDocs Docker image with plugins...$(NC)"
|
||||||
|
@docker build -t roadwave-mkdocs -f docs/docker/mkdocs.Dockerfile . -q
|
||||||
@echo "$(BLUE)Generating BDD documentation from Gherkin files...$(NC)"
|
@echo "$(BLUE)Generating BDD documentation from Gherkin files...$(NC)"
|
||||||
@python3 scripts/generate-bdd-docs.py
|
@python3 docs/scripts/generate-bdd-docs.py
|
||||||
@echo "$(GREEN)✓ BDD documentation generated$(NC)"
|
@echo "$(GREEN)✓ BDD documentation generated$(NC)"
|
||||||
@echo "$(BLUE)Starting documentation server...$(NC)"
|
@echo "$(BLUE)Starting documentation server...$(NC)"
|
||||||
@echo "$(YELLOW)Documentation available at http://localhost:8000$(NC)"
|
@echo "$(YELLOW)Documentation available at http://localhost:8000$(NC)"
|
||||||
@docker run --rm -it -p 8000:8000 -v "$(PWD):/docs" squidfunk/mkdocs-material
|
@docker run --rm -p 8000:8000 -v "$(PWD):/docs" roadwave-mkdocs
|
||||||
|
|
||||||
## bdd-docs: Generate BDD docs from Gherkin and serve with MkDocs (http://localhost:8000)
|
## bdd-docs: Generate BDD docs from Gherkin and serve with MkDocs (http://localhost:8000)
|
||||||
bdd-docs:
|
bdd-docs:
|
||||||
|
@echo "$(BLUE)Building MkDocs Docker image with plugins...$(NC)"
|
||||||
|
@docker build -t roadwave-mkdocs -f docs/docker/mkdocs.Dockerfile . -q
|
||||||
@echo "$(BLUE)Generating BDD documentation from Gherkin files...$(NC)"
|
@echo "$(BLUE)Generating BDD documentation from Gherkin files...$(NC)"
|
||||||
@python3 scripts/generate-bdd-docs.py
|
@python3 docs/scripts/generate-bdd-docs.py
|
||||||
@echo "$(GREEN)✓ BDD documentation generated$(NC)"
|
@echo "$(GREEN)✓ BDD documentation generated$(NC)"
|
||||||
@echo "$(BLUE)Starting documentation server...$(NC)"
|
@echo "$(BLUE)Starting documentation server...$(NC)"
|
||||||
@echo "$(YELLOW)Documentation available at http://localhost:8000$(NC)"
|
@echo "$(YELLOW)Documentation available at http://localhost:8000$(NC)"
|
||||||
@echo "$(YELLOW)Navigate to 'Tests BDD' section$(NC)"
|
@echo "$(YELLOW)Navigate to 'Tests BDD' section$(NC)"
|
||||||
@docker run --rm -it -p 8000:8000 -v "$(PWD):/docs" squidfunk/mkdocs-material
|
@docker run --rm -p 8000:8000 -v "$(PWD):/docs" roadwave-mkdocs
|
||||||
|
|
||||||
## docs-pdf: Generate PDF of all documentation (output/RoadWave_Documentation.pdf)
|
## docs-pdf: Generate PDF of all documentation (output/RoadWave_Documentation.pdf)
|
||||||
docs-pdf:
|
docs-pdf:
|
||||||
@echo "$(BLUE)Generating BDD documentation from Gherkin files...$(NC)"
|
@echo "$(BLUE)Generating BDD documentation from Gherkin files...$(NC)"
|
||||||
@python3 scripts/generate-bdd-docs.py
|
@python3 docs/scripts/generate-bdd-docs.py
|
||||||
@echo "$(GREEN)✓ BDD documentation generated$(NC)"
|
@echo "$(GREEN)✓ BDD documentation generated$(NC)"
|
||||||
@echo "$(BLUE)Building PDF generator Docker image...$(NC)"
|
@echo "$(BLUE)Building PDF generator Docker image...$(NC)"
|
||||||
@docker build -t roadwave-pdf-generator -f scripts/Dockerfile.pdf . -q
|
@docker build -t roadwave-pdf-generator -f docs/docker/pdf.Dockerfile . -q
|
||||||
@echo "$(BLUE)Generating PDF documentation...$(NC)"
|
@echo "$(BLUE)Generating PDF documentation...$(NC)"
|
||||||
@docker run --rm -u $(shell id -u):$(shell id -g) -v "$(PWD):/docs" roadwave-pdf-generator
|
@docker run --rm -u $(shell id -u):$(shell id -g) -v "$(PWD):/docs" roadwave-pdf-generator
|
||||||
@echo "$(GREEN)✓ PDF generated: output/RoadWave_Documentation.pdf$(NC)"
|
@echo "$(GREEN)✓ PDF generated: output/RoadWave_Documentation.pdf$(NC)"
|
||||||
|
|||||||
@@ -4,15 +4,15 @@ services:
|
|||||||
# Backend API
|
# Backend API
|
||||||
api:
|
api:
|
||||||
build:
|
build:
|
||||||
context: ./backend
|
context: .
|
||||||
dockerfile: Dockerfile.dev
|
dockerfile: docker/dev.Dockerfile
|
||||||
ports:
|
ports:
|
||||||
- "8080:8080"
|
- "8080:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- ./backend:/app
|
- .:/app
|
||||||
- /app/tmp
|
- /app/tmp
|
||||||
env_file:
|
env_file:
|
||||||
- ./backend/.env
|
- ./.env
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
14
docs/docker/mkdocs.Dockerfile
Normal file
14
docs/docker/mkdocs.Dockerfile
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
FROM squidfunk/mkdocs-material:latest
|
||||||
|
|
||||||
|
# Install mkdocs-kroki-plugin
|
||||||
|
RUN pip install --no-cache-dir mkdocs-kroki-plugin
|
||||||
|
|
||||||
|
# Set working directory
|
||||||
|
WORKDIR /docs
|
||||||
|
|
||||||
|
# Expose MkDocs port
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
# Default command
|
||||||
|
ENTRYPOINT ["mkdocs"]
|
||||||
|
CMD ["serve", "--dev-addr=0.0.0.0:8000"]
|
||||||
@@ -18,4 +18,4 @@ RUN pip install --no-cache-dir \
|
|||||||
|
|
||||||
WORKDIR /docs
|
WORKDIR /docs
|
||||||
|
|
||||||
ENTRYPOINT ["python3", "/docs/scripts/generate-pdf-docs.py"]
|
ENTRYPOINT ["python3", "/docs/docs/scripts/generate-pdf-docs.py"]
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Script pour corriger les liens internes dans la documentation après refactorisation DDD
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "🔗 Correction des liens internes dans la documentation..."
|
|
||||||
|
|
||||||
# Fonction pour corriger les liens dans les fichiers du domaine _shared
|
|
||||||
fix_shared_links() {
|
|
||||||
echo " → Correction des liens dans _shared..."
|
|
||||||
find docs/domains/_shared -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|../../regles-metier/01-authentification-inscription.md|../rules/authentification.md|g' \
|
|
||||||
-e 's|../../regles-metier/02-conformite-rgpd.md|../rules/rgpd.md|g' \
|
|
||||||
-e 's|../../regles-metier/10-gestion-erreurs.md|../rules/gestion-erreurs.md|g' \
|
|
||||||
-e 's|modele-global.md|../entities/modele-global.md|g' \
|
|
||||||
{} \;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fonction pour corriger les liens dans les fichiers du domaine recommendation
|
|
||||||
fix_recommendation_links() {
|
|
||||||
echo " → Correction des liens dans recommendation..."
|
|
||||||
find docs/domains/recommendation -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|../../regles-metier/03-centres-interet-jauges.md|../rules/centres-interet-jauges.md|g' \
|
|
||||||
-e 's|../../regles-metier/04-algorithme-recommandation.md|../rules/algorithme-recommandation.md|g' \
|
|
||||||
-e 's|../../regles-metier/05-interactions-navigation.md|../rules/interactions-navigation.md|g' \
|
|
||||||
-e 's|../../docs/regles-metier/04-algorithme-recommandation.md|../rules/algorithme-recommandation.md|g' \
|
|
||||||
-e 's|modele-global.md|../../_shared/entities/modele-global.md|g' \
|
|
||||||
{} \;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fonction pour corriger les liens dans les fichiers du domaine content
|
|
||||||
fix_content_links() {
|
|
||||||
echo " → Correction des liens dans content..."
|
|
||||||
find docs/domains/content -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|../../regles-metier/06-audio-guides-multi-sequences.md|../rules/audio-guides.md|g' \
|
|
||||||
-e 's|../../regles-metier/07-contenus-geolocalises-voiture.md|../rules/contenus-geolocalises.md|g' \
|
|
||||||
-e 's|../../regles-metier/11-creation-publication-contenu.md|../rules/creation-publication.md|g' \
|
|
||||||
-e 's|../../regles-metier/12-radio-live.md|../rules/radio-live.md|g' \
|
|
||||||
-e 's|../../regles-metier/13-detection-contenu-protege.md|../rules/detection-contenu-protege.md|g' \
|
|
||||||
-e 's|modele-global.md|../../_shared/entities/modele-global.md|g' \
|
|
||||||
{} \;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fonction pour corriger les liens dans les fichiers du domaine advertising
|
|
||||||
fix_advertising_links() {
|
|
||||||
echo " → Correction des liens dans advertising..."
|
|
||||||
find docs/domains/advertising -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|../../regles-metier/16-publicites.md|../rules/publicites.md|g' \
|
|
||||||
-e 's|modele-global.md|../../_shared/entities/modele-global.md|g' \
|
|
||||||
{} \;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fonction pour corriger les liens dans les fichiers du domaine premium
|
|
||||||
fix_premium_links() {
|
|
||||||
echo " → Correction des liens dans premium..."
|
|
||||||
find docs/domains/premium -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|../../regles-metier/08-mode-offline.md|../rules/mode-offline.md|g' \
|
|
||||||
-e 's|../../regles-metier/09-abonnements-notifications.md|../rules/abonnements-notifications.md|g' \
|
|
||||||
-e 's|../../regles-metier/17-premium.md|../rules/premium.md|g' \
|
|
||||||
-e 's|modele-global.md|../../_shared/entities/modele-global.md|g' \
|
|
||||||
{} \;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fonction pour corriger les liens dans les fichiers du domaine monetization
|
|
||||||
fix_monetization_links() {
|
|
||||||
echo " → Correction des liens dans monetization..."
|
|
||||||
find docs/domains/monetization -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|../../regles-metier/18-monetisation-createurs.md|../rules/monetisation-createurs.md|g' \
|
|
||||||
-e 's|modele-global.md|../../_shared/entities/modele-global.md|g' \
|
|
||||||
{} \;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fonction pour corriger les liens dans les fichiers du domaine moderation
|
|
||||||
fix_moderation_links() {
|
|
||||||
echo " → Correction des liens dans moderation..."
|
|
||||||
find docs/domains/moderation -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|../../regles-metier/14-moderation-flows.md|../rules/moderation-flows.md|g' \
|
|
||||||
-e 's|../../regles-metier/15-moderation-communautaire.md|../rules/moderation-communautaire.md|g' \
|
|
||||||
-e 's|../../regles-metier/19-autres-comportements.md|../rules/autres-comportements.md|g' \
|
|
||||||
-e 's|modele-global.md|../../_shared/entities/modele-global.md|g' \
|
|
||||||
{} \;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Fonction pour corriger les liens dans les autres fichiers docs (ADR, etc.)
|
|
||||||
fix_other_docs_links() {
|
|
||||||
echo " → Correction des liens dans ADR et autres docs..."
|
|
||||||
|
|
||||||
# ADR et autres fichiers qui référencent les anciennes règles métier
|
|
||||||
find docs/adr docs/mobile docs/compliance docs/architecture -type f -name "*.md" 2>/dev/null -exec sed -i \
|
|
||||||
-e 's|regles-metier/01-authentification-inscription.md|domains/_shared/rules/authentification.md|g' \
|
|
||||||
-e 's|regles-metier/02-conformite-rgpd.md|domains/_shared/rules/rgpd.md|g' \
|
|
||||||
-e 's|regles-metier/03-centres-interet-jauges.md|domains/recommendation/rules/centres-interet-jauges.md|g' \
|
|
||||||
-e 's|regles-metier/04-algorithme-recommandation.md|domains/recommendation/rules/algorithme-recommandation.md|g' \
|
|
||||||
-e 's|regles-metier/05-interactions-navigation.md|domains/recommendation/rules/interactions-navigation.md|g' \
|
|
||||||
-e 's|regles-metier/06-audio-guides-multi-sequences.md|domains/content/rules/audio-guides.md|g' \
|
|
||||||
-e 's|regles-metier/07-contenus-geolocalises-voiture.md|domains/content/rules/contenus-geolocalises.md|g' \
|
|
||||||
-e 's|regles-metier/08-mode-offline.md|domains/premium/rules/mode-offline.md|g' \
|
|
||||||
-e 's|regles-metier/09-abonnements-notifications.md|domains/premium/rules/abonnements-notifications.md|g' \
|
|
||||||
-e 's|regles-metier/10-gestion-erreurs.md|domains/_shared/rules/gestion-erreurs.md|g' \
|
|
||||||
-e 's|regles-metier/11-creation-publication-contenu.md|domains/content/rules/creation-publication.md|g' \
|
|
||||||
-e 's|regles-metier/12-radio-live.md|domains/content/rules/radio-live.md|g' \
|
|
||||||
-e 's|regles-metier/13-detection-contenu-protege.md|domains/content/rules/detection-contenu-protege.md|g' \
|
|
||||||
-e 's|regles-metier/14-moderation-flows.md|domains/moderation/rules/moderation-flows.md|g' \
|
|
||||||
-e 's|regles-metier/15-moderation-communautaire.md|domains/moderation/rules/moderation-communautaire.md|g' \
|
|
||||||
-e 's|regles-metier/16-publicites.md|domains/advertising/rules/publicites.md|g' \
|
|
||||||
-e 's|regles-metier/17-premium.md|domains/premium/rules/premium.md|g' \
|
|
||||||
-e 's|regles-metier/18-monetisation-createurs.md|domains/monetization/rules/monetisation-createurs.md|g' \
|
|
||||||
-e 's|regles-metier/19-autres-comportements.md|domains/moderation/rules/autres-comportements.md|g' \
|
|
||||||
-e 's|diagrammes/entites/modele-global.md|domains/_shared/entities/modele-global.md|g' \
|
|
||||||
-e 's|diagrammes/entites/modele-recommandation.md|domains/recommendation/entities/modele-recommandation.md|g' \
|
|
||||||
-e 's|diagrammes/entites/modele-audio-guides.md|domains/content/entities/modele-audio-guides.md|g' \
|
|
||||||
-e 's|diagrammes/entites/modele-radio-live.md|domains/content/entities/modele-radio-live.md|g' \
|
|
||||||
-e 's|diagrammes/entites/modele-publicites.md|domains/advertising/entities/modele-publicites.md|g' \
|
|
||||||
-e 's|diagrammes/entites/modele-premium.md|domains/premium/entities/modele-premium.md|g' \
|
|
||||||
-e 's|diagrammes/entites/modele-monetisation.md|domains/monetization/entities/modele-monetisation.md|g' \
|
|
||||||
-e 's|diagrammes/entites/modele-moderation.md|domains/moderation/entities/modele-moderation.md|g' \
|
|
||||||
-e 's|diagrammes/flux/moderation-signalement.md|domains/moderation/flows/moderation-signalement.md|g' \
|
|
||||||
-e 's|diagrammes/etats/signalement-lifecycle.md|domains/moderation/states/signalement-lifecycle.md|g' \
|
|
||||||
-e 's|diagrammes/sequence/processus-appel-moderation.md|domains/moderation/sequences/processus-appel-moderation.md|g' \
|
|
||||||
{} \; 2>/dev/null || true
|
|
||||||
|
|
||||||
# Fichier gherkin-moderation-overview.md
|
|
||||||
if [ -f docs/gherkin-moderation-overview.md ]; then
|
|
||||||
sed -i \
|
|
||||||
-e 's|regles-metier/14-moderation-flows.md|domains/moderation/rules/moderation-flows.md|g' \
|
|
||||||
-e 's|regles-metier/15-moderation-communautaire.md|domains/moderation/rules/moderation-communautaire.md|g' \
|
|
||||||
docs/gherkin-moderation-overview.md
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Exécuter toutes les corrections
|
|
||||||
fix_shared_links
|
|
||||||
fix_recommendation_links
|
|
||||||
fix_content_links
|
|
||||||
fix_advertising_links
|
|
||||||
fix_premium_links
|
|
||||||
fix_monetization_links
|
|
||||||
fix_moderation_links
|
|
||||||
fix_other_docs_links
|
|
||||||
|
|
||||||
echo "✅ Correction des liens terminée!"
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Script pour ajouter des lignes vides avant les listes markdown
|
|
||||||
# qui n'en ont pas, pour un rendu correct dans mkdocs
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "🔍 Recherche des fichiers markdown dans docs/..."
|
|
||||||
|
|
||||||
# Compteur de fichiers modifiés
|
|
||||||
modified=0
|
|
||||||
|
|
||||||
# Trouver tous les fichiers .md dans docs/
|
|
||||||
find docs -name "*.md" -type f | while read -r file; do
|
|
||||||
echo " Traitement de $file..."
|
|
||||||
|
|
||||||
# Utiliser awk pour ajouter une ligne vide avant les listes si nécessaire
|
|
||||||
awk '
|
|
||||||
BEGIN {
|
|
||||||
prev = ""
|
|
||||||
prev_empty = 1
|
|
||||||
}
|
|
||||||
{
|
|
||||||
current = $0
|
|
||||||
# Si la ligne courante commence par "- " et que la ligne précédente n'\''est pas vide
|
|
||||||
# et ne commence pas déjà par "- " (déjà dans une liste)
|
|
||||||
if (current ~ /^- / && prev !~ /^$/ && prev !~ /^- /) {
|
|
||||||
print prev
|
|
||||||
print "" # Ajouter une ligne vide
|
|
||||||
prev = current
|
|
||||||
}
|
|
||||||
# Sinon, imprimer la ligne précédente normalement
|
|
||||||
else if (NR > 1) {
|
|
||||||
print prev
|
|
||||||
prev = current
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
prev = current
|
|
||||||
}
|
|
||||||
}
|
|
||||||
END {
|
|
||||||
# Imprimer la dernière ligne
|
|
||||||
if (prev != "") print prev
|
|
||||||
}
|
|
||||||
' "$file" > "$file.tmp"
|
|
||||||
|
|
||||||
# Vérifier si le fichier a changé
|
|
||||||
if ! cmp -s "$file" "$file.tmp"; then
|
|
||||||
mv "$file.tmp" "$file"
|
|
||||||
echo " ✅ $file modifié"
|
|
||||||
modified=$((modified + 1))
|
|
||||||
else
|
|
||||||
rm "$file.tmp"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "✨ Terminé ! $modified fichier(s) modifié(s)"
|
|
||||||
@@ -1,69 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Script pour corriger les liens restants après refactorisation DDD
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "🔗 Correction des liens restants..."
|
|
||||||
|
|
||||||
# 1. Corriger les liens docs/adr/ → adr/ dans index.md et technical.md
|
|
||||||
echo " → Correction des liens ADR dans index.md et technical.md..."
|
|
||||||
find docs -name "index.md" -o -name "technical.md" -o -name "TECHNICAL.md" | while read file; do
|
|
||||||
if [ -f "$file" ]; then
|
|
||||||
sed -i 's|docs/adr/|adr/|g' "$file"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# 2. Corriger les liens vers anciens noms de fichiers numérotés
|
|
||||||
echo " → Correction des liens vers anciens noms de fichiers..."
|
|
||||||
|
|
||||||
# Dans content/
|
|
||||||
find docs/domains/content -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|05-interactions-navigation\.md|../../recommendation/rules/interactions-navigation.md|g' \
|
|
||||||
-e 's|18-detection-contenu-protege\.md|detection-contenu-protege.md|g' \
|
|
||||||
{} \;
|
|
||||||
|
|
||||||
# Dans moderation/
|
|
||||||
find docs/domains/moderation -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|18-detection-contenu-protege\.md|../../content/rules/detection-contenu-protege.md|g' \
|
|
||||||
-e 's|19-moderation-communautaire\.md|moderation-communautaire.md|g' \
|
|
||||||
{} \;
|
|
||||||
|
|
||||||
# Dans premium/
|
|
||||||
find docs/domains/premium -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|05-interactions-navigation\.md|../../recommendation/rules/interactions-navigation.md|g' \
|
|
||||||
-e 's|08-mode-offline\.md|mode-offline.md|g' \
|
|
||||||
{} \;
|
|
||||||
|
|
||||||
# Dans recommendation/
|
|
||||||
find docs/domains/recommendation -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|05-interactions-navigation\.md|interactions-navigation.md|g' \
|
|
||||||
-e 's|ANNEXE-POST-MVP\.md|../../_shared/rules/ANNEXE-POST-MVP.md|g' \
|
|
||||||
{} \;
|
|
||||||
|
|
||||||
# 3. Corriger les liens relatifs vers ADR depuis les domaines
|
|
||||||
echo " → Correction des liens ADR depuis les domaines..."
|
|
||||||
find docs/domains -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|\.\./adr/|../../../adr/|g' \
|
|
||||||
{} \;
|
|
||||||
|
|
||||||
# 4. Corriger le lien dans recommendation/features/recommendation/README.md
|
|
||||||
if [ -f "docs/domains/recommendation/features/recommendation/README.md" ]; then
|
|
||||||
sed -i 's|\.\./rules/|../../rules/|g' docs/domains/recommendation/features/recommendation/README.md
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 5. Corriger les liens dans mobile/ vers adr/
|
|
||||||
find docs/mobile -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|\.\./adr/010-frontend-mobile\.md|../adr/012-frontend-mobile.md|g' \
|
|
||||||
{} \;
|
|
||||||
|
|
||||||
# 6. Corriger liens dans compliance/
|
|
||||||
if [ -f "docs/compliance/stores-submission.md" ]; then
|
|
||||||
sed -i 's|../adr/010-frontend-mobile\.md|../adr/012-frontend-mobile.md|g' docs/compliance/stores-submission.md
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 7. Corriger le lien vers sequences/scoring-recommandation.md qui n'existe pas
|
|
||||||
find docs/domains/recommendation -type f -name "README.md" -exec sed -i \
|
|
||||||
-e 's|sequences/scoring-recommandation\.md|(à créer)|g' \
|
|
||||||
{} \;
|
|
||||||
|
|
||||||
echo "✅ Correction des liens restants terminée!"
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Script pour supprimer les liens cassés vers des fichiers inexistants
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "🗑️ Suppression des liens cassés..."
|
|
||||||
|
|
||||||
# 1. Supprimer les liens vers ADR inexistants dans index.md
|
|
||||||
echo " → Nettoyage de index.md..."
|
|
||||||
if [ -f "docs/index.md" ]; then
|
|
||||||
sed -i \
|
|
||||||
-e '/adr\/010-commandes-volant\.md/d' \
|
|
||||||
-e '/adr\/011-conformite-stores-carplay-android-auto\.md/d' \
|
|
||||||
docs/index.md
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 2. Corriger les numéros ADR incorrects dans technical.md
|
|
||||||
echo " → Correction des numéros ADR dans technical.md..."
|
|
||||||
if [ -f "docs/technical.md" ]; then
|
|
||||||
sed -i \
|
|
||||||
-e 's|adr/018-notifications-push\.md|adr/017-notifications-geolocalisees.md|g' \
|
|
||||||
docs/technical.md
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 3. Supprimer les liens vers fichiers d'analyse inexistants dans ADR
|
|
||||||
echo " → Nettoyage des liens dans les ADR..."
|
|
||||||
find docs/adr -type f -name "*.md" -exec sed -i \
|
|
||||||
-e 's|\[.*\](../architecture/database/schema\.md)||g' \
|
|
||||||
-e 's|\[.*\](../INCONSISTENCIES-ANALYSIS\.md[^)]*)||g' \
|
|
||||||
-e 's|\[.*\](\.\.\/ANALYSE_LIBRAIRIES_GO\.md)||g' \
|
|
||||||
-e 's|\[.*\](../../README\.md)||g' \
|
|
||||||
-e 's|\[.*\](../../TECHNICAL\.md)||g' \
|
|
||||||
{} \;
|
|
||||||
|
|
||||||
# 4. Corriger les numéros ADR dans adr/014-organisation-monorepo.md
|
|
||||||
if [ -f "docs/adr/014-organisation-monorepo.md" ]; then
|
|
||||||
sed -i 's|020-strategie-cicd-monorepo\.md|022-strategie-cicd-monorepo.md|g' docs/adr/014-organisation-monorepo.md
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 5. Corriger les numéros ADR dans adr/020-librairies-flutter.md
|
|
||||||
if [ -f "docs/adr/020-librairies-flutter.md" ]; then
|
|
||||||
sed -i \
|
|
||||||
-e 's|018-librairies-flutter\.md|020-librairies-flutter.md|g' \
|
|
||||||
-e 's|010-frontend-mobile\.md|012-frontend-mobile.md|g' \
|
|
||||||
docs/adr/020-librairies-flutter.md
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 6. Corriger le lien ADR dans domains/recommendation/rules/interactions-navigation.md
|
|
||||||
if [ -f "docs/domains/recommendation/rules/interactions-navigation.md" ]; then
|
|
||||||
sed -i 's|../../../adr/010-frontend-mobile\.md|../../../adr/012-frontend-mobile.md|g' \
|
|
||||||
docs/domains/recommendation/rules/interactions-navigation.md
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 7. Corriger les liens dans domains/README.md
|
|
||||||
if [ -f "docs/domains/README.md" ]; then
|
|
||||||
sed -i \
|
|
||||||
-e 's|\[📖 Règles métier par numéro\](../regles-metier/)||g' \
|
|
||||||
-e 's|\[🏛️ ADR (Architecture Decision Records)\](../../../adr/)|[🏛️ ADR (Architecture Decision Records)](../adr/)|g' \
|
|
||||||
-e 's|\[⚖️ Documentation légale\](../legal/)|[⚖️ Documentation légale](../legal/README.md)|g' \
|
|
||||||
-e 's|\[🖥️ Interfaces UI\](../interfaces/)|[🖥️ Interfaces UI](../interfaces/README.md)|g' \
|
|
||||||
docs/domains/README.md
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 8. Nettoyer les lignes vides créées par les suppressions
|
|
||||||
find docs -type f -name "*.md" -exec sed -i '/^$/N;/^\n$/d' {} \;
|
|
||||||
|
|
||||||
echo "✅ Liens cassés supprimés/corrigés!"
|
|
||||||
Reference in New Issue
Block a user