From 60ed1773359cdea9ea7289f3a7e687f3e995f934 Mon Sep 17 00:00:00 2001 From: z3n Date: Wed, 24 Jun 2026 09:22:17 +0000 Subject: [PATCH] fix(uploads): ignorer ENOENT si CLI asyncapi/redocly absent (dev local sans Docker) Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude Co-Authored-By: Happy --- back/src/modules/uploads/uploads.controller.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/back/src/modules/uploads/uploads.controller.ts b/back/src/modules/uploads/uploads.controller.ts index fdbf5b0..44d0b43 100644 --- a/back/src/modules/uploads/uploads.controller.ts +++ b/back/src/modules/uploads/uploads.controller.ts @@ -138,13 +138,17 @@ export class UploadsController { await execFileAsync('redocly', ['lint', mainPath], { env: execEnv, timeout: 30000 }); } } catch (cliError) { - const err = cliError as { stdout?: string; stderr?: string }; - const output = (err.stdout || err.stderr || String(cliError)).trim(); - return { - valid: false, type: detectedType, mainFile: mainFileName, - name: null, versionMajor: null, versionMinor: null, versionPatch: null, description: null, - errors: [{ file: mainFileName, message: output }], - }; + const err = cliError as NodeJS.ErrnoException & { stdout?: string; stderr?: string }; + /* CLI non installé (dev local sans Docker) → skip la validation complète */ + if (err.code !== 'ENOENT') { + const output = (err.stdout || err.stderr || String(cliError)).trim(); + return { + valid: false, type: detectedType, mainFile: mainFileName, + name: null, versionMajor: null, versionMinor: null, versionPatch: null, description: null, + errors: [{ file: mainFileName, message: output }], + }; + } + this.logger.warn(`CLI ${detectedType === 'ASYNCAPI' ? 'asyncapi' : 'redocly'} non trouvé — validation CLI ignorée`); } } finally { await fsPromises.rm(tempDir, { recursive: true, force: true }).catch(() => undefined);