Production/scripts/code_quality/check_format.ts
Le check format vérifie automatiquement la qualité du code avant une PR.
Il lance un script TypeScript qui passe sur chaque workspace du monorepo (API, bots, packages) et exécute la commande de format locale.
Objectif:
Le script fait ces étapes dans cet ordre:
Lit la liste des workspaces depuis le package principal.
Lance la vérification workspace par workspace.
Affiche pour chaque workspace:
Affiche un résumé final.
Le script est volontairement strict:
Commande standard (depuis le dossier AM):
npm run check:format
Ce que la validation lance en pratique:
Exemple réel sur un workspace:
[check:format] Starting workspace format validation
Project root: /mnt/data/vmenon/Other_Work/efrei-dev/AM
Workspaces to check: 1
Workspace filter: apps/api
[RUN] apps/api
Command: npm run fmt --workspace apps/api --if-present
...
[OK] apps/api (6.00s)
[OK] All checks passed: 1/1 workspace(s) in 6.00s.
En cas d'échec, le script:
FAIL: unknown workspace 'apps/bots/does-not-exist'.
Known workspaces:
- apps/api
- apps/bots/achievements
- apps/bots/avenir-rider
- apps/bots/clash-rider
- apps/bots/motomap
- apps/bots/officina-ducati
- packages/api-client
- packages/shared
[RUN] apps/bots/nom-du-workspace
Command: npm run fmt --workspace apps/bots/nom-du-workspace --if-present
...
[FAIL] apps/bots/nom-du-workspace (5.22s)
Exit code: 1
Troubleshooting:
- Re-run format only: npm run fmt --workspace apps/bots/nom-du-workspace
- Re-run lint only: npm run lint --workspace apps/bots/nom-du-workspace
- Re-run knip only: npm run knip --workspace apps/bots/nom-du-workspace
- Tip: search above for the first ESLint/Knip error. The script stops on first failing workspace.
Summary: 5/8 workspace(s) passed in 18.40s.
Le formatage est gere par Prettier.
Si cette etape echoue:
npm run fmt --workspace nom-du-workspace
Le lint verifie les regles de qualite et de coherence du code.
Points importants:
En cas d'echec lint:
npm run lint --workspace nom-du-workspace
Knip verifie les fichiers non utilises et les imports non utilises.
En cas d'echec Knip:
npm run knip --workspace nom-du-workspace