Skip to content

Scripts ​

Outillage du dépôt, hors chaîne de packaging — celle-ci vit dans deployment/.

ScriptTechnologieRôle
generate-ts-enums.ps1PowerShellRégénère vue/src/config/generated/enums.ts depuis les enums C#
sonar-scan.ps1PowerShellAnalyse SonarQube du dépôt entier — C# et Vue/TS — couverture comprise
generate-demo-maps.mjsNode, sans dépendanceProduit les 16 plans SVG de démonstration et réinjecte leur description dans demo-fixtures.json

generate-ts-enums.ps1 ​

powershell
./scripts/generate-ts-enums.ps1

Enveloppe de dotnet/tools/TsEnumGenerator : le script résout le chemin de sortie et lance le générateur. Le fichier produit est versionné, et l'intégration continue échoue s'il est périmé.

sonar-scan.ps1 ​

powershell
$env:SONAR_TOKEN = "sqp_xxx"
./scripts/sonar-scan.ps1 -SonarUrl "https://sonar.exemple.fr"
./scripts/sonar-scan.ps1 -SonarUrl $url -SkipBackend      # itération frontend seule
ParamètreDéfautRôle
-SonarUrl$env:SONAR_HOST_URLURL du serveur
-SonarToken$env:SONAR_TOKENJeton d'analyse de projet
-ProjectKeysuperviseurClé du projet SonarQube
-ProjectNameSuperviseurNom affiché
-SkipFrontend / -SkipBackend—Saute les tests et la couverture du côté correspondant

Prérequis : SDK .NET 9, Node 22 et npm, Java 17 ou plus. dotnet-sonarscanner est installé comme outil global s'il manque.

Mécanismes non évidents ​

PointDétail
.env de la racineLu s'il existe, sans jamais écraser une variable déjà définie dans l'environnement. Le fichier n'est pas versionné
Ordre imposébegin doit précéder le build C#, faute de quoi l'analyse MSBuild ne s'accroche à rien. La couverture frontend est produite avant, mais lue au end
Purge des TestResultsLes anciens dossiers sont supprimés avant les tests : sans cela, des rapports de couverture obsolètes seraient importés
VersionPrise dans AppVersion de app.config.json, avec 0.0.0 en repli
Un seul projet SonarQubeL'analyseur .NET enrobe le build C# et récupère aussi les fichiers Vue/TS, la couverture C# (OpenCover, via coverlet.runsettings) et la couverture frontend (lcov)
Couverture volontairement non exclueLes composants *.vue, SupervisionWorker et le planificateur de rapports restent dans le calcul : Vitest et coverlet la produisent réellement pour eux
Le serveur SonarQube est une infrastructure partagéeIl est hébergé hors de ce dépôt ; ni sa composition Docker ni ses secrets n'y figurent

generate-demo-maps.mjs ​

bash
node scripts/generate-demo-maps.mjs

Produit demo-assets/maps/demo-{clé}.svg — 16 fichiers — à partir des centrales décrites dans demo-fixtures.json. Chaque zone devient une pièce rectangulaire, meublée selon le thème du plan, et deux détecteurs par zone sont placés à l'intérieur du polygone de la pièce.

Le script réécrit sa propre source ​

C'est le point à connaître : demo-fixtures.json est à la fois entrée et sortie.

PasseEffet sur demo-fixtures.json
1pointsPerZone est normalisé à 4 pour les centrales INIS ; les AVISS ne sont pas touchées
2Les 16 SVG sont écrits dans demo-assets/maps/
3La section maps est réinjectée par un aller-retour JSON complet — aucun champ de panels n'est modifié
ConventionValeur
viewBox0 0 1600 1000, fixe
Conversion pixel → pourcentagex% = xPixel / 16, y% = yPixel / 10
Bande d'en-têtey ∈ [0, 160] — titre seul, aucun dessin
Bâtimentsy ∈ [170, 860]
Pied de pagey ∈ [870, 1000] — barre d'échelle et cartouche
Aire utile horizontalex ∈ [80, 1520]

Le regroupement des centrales par plan et leurs libellés sont figés dans la constante PLANS du script ; zoneCount et pointsPerZone sont lus à l'exécution dans la section panels des fixtures.

Contraintes actives ​

ContrainteConséquence si elle est ignorée
Les .ps1 sont écrits en UTF-8 avec BOMSans BOM, PowerShell 5.1 les lit en ANSI, corrompt les accents et casse le parsing
scripts/** est exclu de l'analyse SonarQubeCes fichiers ne comptent ni dans la dette ni dans la couverture
Lancer les scripts depuis la racine du dépôtChacun résout ses chemins relativement à son propre emplacement, mais sonar-scan.ps1 s'y replace lui-même

Documentation Technique