From 031b0977187aa770782d9795bec39c2676429acc Mon Sep 17 00:00:00 2001 From: "Michael B. Gale" Date: Mon, 12 Oct 2026 16:15:55 +0100 Subject: [PATCH] Refactor `writeTemporaryDiagnosticFile` out of `add[NoLanguage]Diagnostic` --- lib/entry-points.js | 29 +++++++++++++++++++++++------ src/diagnostics.ts | 42 +++++++++++++++++++++++++++++++++++------- 2 files changed, 58 insertions(+), 13 deletions(-) diff --git a/lib/entry-points.js b/lib/entry-points.js index f4e408dc3..17f7fbfe8 100644 --- a/lib/entry-points.js +++ b/lib/entry-points.js @@ -173023,12 +173023,10 @@ function addDiagnostic(config, language, diagnostic, logger2 = getActionsLogger( logger2.debug( `Writing a diagnostic for ${language}, but the database at ${databasePath} does not exist yet.` ); - const tempDiagnosticsPath = getTempDiagnosticPath(config.tempDir, language); - const diagnosticPath = writeDiagnosticFile(tempDiagnosticsPath, diagnostic); - temporaryDiagnostics.push({ path: diagnosticPath, language }); + writeTemporaryDiagnosticFile(logger2, config.tempDir, language, diagnostic); } } -function addNoLanguageDiagnostic(config, diagnostic) { +function addNoLanguageDiagnostic(config, diagnostic, logger2 = getActionsLogger()) { if (config !== void 0) { addDiagnostic( config, @@ -173038,9 +173036,28 @@ function addNoLanguageDiagnostic(config, diagnostic) { diagnostic ); } else { - const tempDiagnosticsPath = getTempDiagnosticPath(getTemporaryDirectory()); + logger2.debug( + `Writing a diagnostic not associated with any language, but we have no configuration to tell us where the database is yet.` + ); + writeTemporaryDiagnosticFile( + logger2, + getTemporaryDirectory(), + void 0, + diagnostic + ); + } +} +function writeTemporaryDiagnosticFile(logger2, tempDir, language, diagnostic) { + const tempDiagnosticsPath = getTempDiagnosticPath(tempDir, language); + try { const diagnosticPath = writeDiagnosticFile(tempDiagnosticsPath, diagnostic); - temporaryDiagnostics.push({ path: diagnosticPath }); + temporaryDiagnostics.push({ path: diagnosticPath, language }); + } catch (err) { + logger2.warning( + `Unable to write temporary diagnostic to '${tempDiagnosticsPath}': ${getErrorMessage(err)} + +${JSON.stringify(diagnostic)}` + ); } } function writeDiagnosticFile(diagnosticsPath, diagnostic) { diff --git a/src/diagnostics.ts b/src/diagnostics.ts index 1e74f5252..a3b44fd76 100644 --- a/src/diagnostics.ts +++ b/src/diagnostics.ts @@ -179,11 +179,7 @@ export function addDiagnostic( ); // Write the diagnostic to a temporary location. - const tempDiagnosticsPath = getTempDiagnosticPath(config.tempDir, language); - const diagnosticPath = writeDiagnosticFile(tempDiagnosticsPath, diagnostic); - - // Track the temporary file. - temporaryDiagnostics.push({ path: diagnosticPath, language }); + writeTemporaryDiagnosticFile(logger, config.tempDir, language, diagnostic); } } @@ -191,6 +187,7 @@ export function addDiagnostic( export function addNoLanguageDiagnostic( config: Config | undefined, diagnostic: DiagnosticMessage, + logger: Logger = getActionsLogger(), ) { if (config !== undefined) { addDiagnostic( @@ -201,11 +198,42 @@ export function addNoLanguageDiagnostic( diagnostic, ); } else { - const tempDiagnosticsPath = getTempDiagnosticPath(getTemporaryDirectory()); + logger.debug( + `Writing a diagnostic not associated with any language, but we have no configuration to tell us where the database is yet.`, + ); + + // Write the diagnostic to a temporary location. + writeTemporaryDiagnosticFile( + logger, + getTemporaryDirectory(), + undefined, + diagnostic, + ); + } +} + +/** + * Writes {@link diagnostic} for an optional {@link language} to a subdirectory of {@link tempDir} + * and tracks it as a diagnostic that was written to a temporary location. + */ +function writeTemporaryDiagnosticFile( + logger: Logger, + tempDir: string, + language: Language | undefined, + diagnostic: DiagnosticMessage, +) { + const tempDiagnosticsPath = getTempDiagnosticPath(tempDir, language); + + try { + // Write the diagnostic to a temporary location. const diagnosticPath = writeDiagnosticFile(tempDiagnosticsPath, diagnostic); // Track the temporary file. - temporaryDiagnostics.push({ path: diagnosticPath }); + temporaryDiagnostics.push({ path: diagnosticPath, language }); + } catch (err) { + logger.warning( + `Unable to write temporary diagnostic to '${tempDiagnosticsPath}': ${getErrorMessage(err)}\n\n${JSON.stringify(diagnostic)}`, + ); } }