diff --git a/lib/diagnostics.js b/lib/diagnostics.js index 20ee8270e..7030624db 100644 --- a/lib/diagnostics.js +++ b/lib/diagnostics.js @@ -32,15 +32,22 @@ exports.makeDiagnostic = makeDiagnostic; */ function addDiagnostic(config, language, diagnostic) { const logger = (0, logging_1.getActionsLogger)(); - const diagnosticsPath = path_1.default.resolve((0, util_1.getCodeQLDatabasePath)(config, language), "diagnostic", "codeql-action"); - try { - // Create the directory if it doesn't exist yet. - (0, fs_1.mkdirSync)(diagnosticsPath, { recursive: true }); - const jsonPath = path_1.default.resolve(diagnosticsPath, `codeql-action-${diagnostic.timestamp}.json`); - (0, fs_1.writeFileSync)(jsonPath, JSON.stringify(diagnostic)); + const databasePath = (0, util_1.getCodeQLDatabasePath)(config, language); + const diagnosticsPath = path_1.default.resolve(databasePath, "diagnostic", "codeql-action"); + // Check that the database exists before writing to it. + if ((0, fs_1.existsSync)(databasePath)) { + try { + // Create the directory if it doesn't exist yet. + (0, fs_1.mkdirSync)(diagnosticsPath, { recursive: true }); + const jsonPath = path_1.default.resolve(diagnosticsPath, `codeql-action-${diagnostic.timestamp}.json`); + (0, fs_1.writeFileSync)(jsonPath, JSON.stringify(diagnostic)); + } + catch (err) { + logger.warning(`Unable to write diagnostic message to database: ${err}`); + } } - catch (err) { - logger.warning(`Unable to write diagnostic message to database: ${err}`); + else { + logger.info(`Writing a diagnostic for ${language}, but the database at ${databasePath} does not exist yet.`); } } exports.addDiagnostic = addDiagnostic; diff --git a/lib/diagnostics.js.map b/lib/diagnostics.js.map index fd86429e2..4f40b3d32 100644 --- a/lib/diagnostics.js.map +++ b/lib/diagnostics.js.map @@ -1 +1 @@ -{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA8C;AAC9C,gDAAwB;AAIxB,uCAA6C;AAC7C,iCAA+C;AAmD/C;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC5B,EAAU,EACV,IAAY,EACZ,OAA+C,SAAS;IAExD,OAAO;QACL,GAAG,IAAI;QACP,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtD,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE;KACtC,CAAC;AACJ,CAAC;AAVD,wCAUC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,MAAc,EACd,QAAkB,EAClB,UAA6B;IAE7B,MAAM,MAAM,GAAG,IAAA,0BAAgB,GAAE,CAAC;IAClC,MAAM,eAAe,GAAG,cAAI,CAAC,OAAO,CAClC,IAAA,4BAAqB,EAAC,MAAM,EAAE,QAAQ,CAAC,EACvC,YAAY,EACZ,eAAe,CAChB,CAAC;IAEF,IAAI,CAAC;QACH,gDAAgD;QAChD,IAAA,cAAS,EAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAC3B,eAAe,EACf,iBAAiB,UAAU,CAAC,SAAS,OAAO,CAC7C,CAAC;QAEF,IAAA,kBAAa,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,OAAO,CAAC,mDAAmD,GAAG,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAzBD,sCAyBC"} \ No newline at end of file +{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA0D;AAC1D,gDAAwB;AAIxB,uCAA6C;AAC7C,iCAA+C;AAmD/C;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC5B,EAAU,EACV,IAAY,EACZ,OAA+C,SAAS;IAExD,OAAO;QACL,GAAG,IAAI;QACP,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACtD,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE;KACtC,CAAC;AACJ,CAAC;AAVD,wCAUC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAC3B,MAAc,EACd,QAAkB,EAClB,UAA6B;IAE7B,MAAM,MAAM,GAAG,IAAA,0BAAgB,GAAE,CAAC;IAClC,MAAM,YAAY,GAAG,IAAA,4BAAqB,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,cAAI,CAAC,OAAO,CAClC,YAAY,EACZ,YAAY,EACZ,eAAe,CAChB,CAAC;IAEF,uDAAuD;IACvD,IAAI,IAAA,eAAU,EAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,gDAAgD;YAChD,IAAA,cAAS,EAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEhD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAC3B,eAAe,EACf,iBAAiB,UAAU,CAAC,SAAS,OAAO,CAC7C,CAAC;YAEF,IAAA,kBAAa,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,OAAO,CAAC,mDAAmD,GAAG,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CACT,4BAA4B,QAAQ,yBAAyB,YAAY,sBAAsB,CAChG,CAAC;IACJ,CAAC;AACH,CAAC;AAjCD,sCAiCC"} \ No newline at end of file diff --git a/src/diagnostics.ts b/src/diagnostics.ts index 76cc4c98a..e7ece8f01 100644 --- a/src/diagnostics.ts +++ b/src/diagnostics.ts @@ -1,4 +1,4 @@ -import { mkdirSync, writeFileSync } from "fs"; +import { existsSync, mkdirSync, writeFileSync } from "fs"; import path from "path"; import { Config } from "./config-utils"; @@ -87,23 +87,31 @@ export function addDiagnostic( diagnostic: DiagnosticMessage, ) { const logger = getActionsLogger(); + const databasePath = getCodeQLDatabasePath(config, language); const diagnosticsPath = path.resolve( - getCodeQLDatabasePath(config, language), + databasePath, "diagnostic", "codeql-action", ); - try { - // Create the directory if it doesn't exist yet. - mkdirSync(diagnosticsPath, { recursive: true }); + // Check that the database exists before writing to it. + if (existsSync(databasePath)) { + try { + // Create the directory if it doesn't exist yet. + mkdirSync(diagnosticsPath, { recursive: true }); - const jsonPath = path.resolve( - diagnosticsPath, - `codeql-action-${diagnostic.timestamp}.json`, - ); + const jsonPath = path.resolve( + diagnosticsPath, + `codeql-action-${diagnostic.timestamp}.json`, + ); - writeFileSync(jsonPath, JSON.stringify(diagnostic)); - } catch (err) { - logger.warning(`Unable to write diagnostic message to database: ${err}`); + writeFileSync(jsonPath, JSON.stringify(diagnostic)); + } catch (err) { + logger.warning(`Unable to write diagnostic message to database: ${err}`); + } + } else { + logger.info( + `Writing a diagnostic for ${language}, but the database at ${databasePath} does not exist yet.`, + ); } }