eqs check : la tâche format rougit dès qu'un générateur supprime un fichier suivi #115

Closed
opened 2026-10-06 10:32:43 +00:00 by nicolas-fryder · 0 comments

Ce qui se passe

bin/format.js construit sa liste avec :

git ls-files --cached --others --exclude-standard

--cached liste l'index. Un fichier encore suivi mais effacé du disque y figure donc, et Prettier sort :

[error] No files matching the pattern were found: "apps/front/generated/api/schemas/fichierAvecTelechargementDto.ts".

La tâche échoue, et le tableau se contente de ✗ format : rien ne dit que la cause est une suppression non indexée.

Quand ça arrive

À chaque fois qu'un générateur retire un fichier. Sur nuage, c'est orval : changer un DTO côté API fait disparaître des schémas générés, et pnpm check rougit tant qu'on n'a pas fait git add. Rencontré trois fois dans la même journée :

  • un type: Object remplacé par une classe nommée → invitationListeeDtoCreator.ts, viewerInviteDetailleDtoViewer.ts disparaissent ;
  • un hiddenClasses: unknown typé en number[] → reglagesPotreeDtoHiddenClasses.ts disparaît ;
  • une classe de DTO supprimée → sept fichiers fichierAvecTelechargementDto*.ts disparaissent.

Le réflexe « relancer, voir si ça passe » ne marche pas, et le message n'oriente pas : on cherche d'abord du côté du formatage.

Ce que ça coûte

La porte dit « échec » pour une raison qui n'a rien à voir avec le formatage, et la vraie question — « ces suppressions sont-elles voulues ? » — n'est pas posée. Elle est d'ailleurs légitime : c'est à git add d'y répondre, pas à Prettier.

Correction proposée

Filtrer les chemins qui n'existent plus, après git ls-files :

const fichiers = r.stdout
  .split(/\r?\n/)
  .filter(Boolean)
  .filter((f) => existsSync(f))

Prettier n'a de toute façon rien à dire d'un fichier absent. Une variante plus bavarde serait de compter les disparus et de l'écrire en une ligne (« 7 fichiers suivis absents du disque, ignorés »), ce qui aiderait à comprendre d'où ils viennent.

Reproduction

Dans n'importe quel dépôt sur le socle :

rm un/fichier/suivi.ts
pnpm check --only=format

Contexte

Relevé pendant le rétrofit du socle sur nuage (0.14.0).

## Ce qui se passe `bin/format.js` construit sa liste avec : ``` git ls-files --cached --others --exclude-standard ``` `--cached` liste l'**index**. Un fichier encore suivi mais effacé du disque y figure donc, et Prettier sort : ``` [error] No files matching the pattern were found: "apps/front/generated/api/schemas/fichierAvecTelechargementDto.ts". ``` La tâche échoue, et le tableau se contente de `✗ format` : rien ne dit que la cause est une suppression non indexée. ## Quand ça arrive À chaque fois qu'un générateur retire un fichier. Sur nuage, c'est orval : changer un DTO côté API fait disparaître des schémas générés, et `pnpm check` rougit tant qu'on n'a pas fait `git add`. Rencontré trois fois dans la même journée : - un `type: Object` remplacé par une classe nommée → `invitationListeeDtoCreator.ts`, `viewerInviteDetailleDtoViewer.ts` disparaissent ; - un `hiddenClasses: unknown` typé en `number[]` → `reglagesPotreeDtoHiddenClasses.ts` disparaît ; - une classe de DTO supprimée → sept fichiers `fichierAvecTelechargementDto*.ts` disparaissent. Le réflexe « relancer, voir si ça passe » ne marche pas, et le message n'oriente pas : on cherche d'abord du côté du formatage. ## Ce que ça coûte La porte dit « échec » pour une raison qui n'a rien à voir avec le formatage, et la vraie question — « ces suppressions sont-elles voulues ? » — n'est pas posée. Elle est d'ailleurs légitime : c'est à `git add` d'y répondre, pas à Prettier. ## Correction proposée Filtrer les chemins qui n'existent plus, après `git ls-files` : ```js const fichiers = r.stdout .split(/\r?\n/) .filter(Boolean) .filter((f) => existsSync(f)) ``` Prettier n'a de toute façon rien à dire d'un fichier absent. Une variante plus bavarde serait de compter les disparus et de l'écrire en une ligne (« 7 fichiers suivis absents du disque, ignorés »), ce qui aiderait à comprendre d'où ils viennent. ## Reproduction Dans n'importe quel dépôt sur le socle : ``` rm un/fichier/suivi.ts pnpm check --only=format ``` ## Contexte Relevé pendant le rétrofit du socle sur nuage (0.14.0).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Infrastructure/eqs-platform#115
No description provided.