From 270886f805308bd0a5b185a33539905aca625820 Mon Sep 17 00:00:00 2001 From: Chuan-kai Lin Date: Mon, 10 Mar 2025 10:28:12 -0700 Subject: [PATCH] Pass overlay mode into databaseInitCluster() This commit adds a OverlayDatabaseMode parameter to databaseInitCluster(). The parameter controls the "codeql database init" flags concerning overlay database creation. There is no behavior change in this commit because we always pass OverlayDatabaseMode.None to databaseInitCluster(). That will change in the next commit. --- src/codeql.test.ts | 5 +++++ src/codeql.ts | 13 ++++++++++++- src/init-action.ts | 2 ++ src/init.ts | 3 +++ src/overlay-database-utils.ts | 5 +++++ 5 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/overlay-database-utils.ts diff --git a/src/codeql.test.ts b/src/codeql.test.ts index 3e4212ab0..a4b105236 100644 --- a/src/codeql.test.ts +++ b/src/codeql.test.ts @@ -20,6 +20,7 @@ import { DocUrl } from "./doc-url"; import { FeatureEnablement } from "./feature-flags"; import { Language } from "./languages"; import { getRunnerLogger } from "./logging"; +import { OverlayDatabaseMode } from "./overlay-database-utils"; import { ToolsSource } from "./setup-codeql"; import { setupTests, @@ -510,6 +511,7 @@ const injectedConfigMacro = test.macro({ "", undefined, undefined, + OverlayDatabaseMode.None, getRunnerLogger(true), ); @@ -723,6 +725,7 @@ test("passes a code scanning config AND qlconfig to the CLI", async (t: Executio "", undefined, "/path/to/qlconfig.yml", + OverlayDatabaseMode.None, getRunnerLogger(true), ); @@ -752,6 +755,7 @@ test("does not pass a qlconfig to the CLI when it is undefined", async (t: Execu "", undefined, undefined, // undefined qlconfigFile + OverlayDatabaseMode.None, getRunnerLogger(true), ); @@ -1005,6 +1009,7 @@ test("Avoids duplicating --overwrite flag if specified in CODEQL_ACTION_EXTRA_OP "sourceRoot", undefined, undefined, + OverlayDatabaseMode.None, getRunnerLogger(false), ); diff --git a/src/codeql.ts b/src/codeql.ts index 84a4c82d9..3cec8320c 100644 --- a/src/codeql.ts +++ b/src/codeql.ts @@ -24,6 +24,7 @@ import { import { isAnalyzingDefaultBranch } from "./git-utils"; import { Language } from "./languages"; import { Logger } from "./logging"; +import { OverlayDatabaseMode } from "./overlay-database-utils"; import * as setupCodeql from "./setup-codeql"; import { ZstdAvailability } from "./tar"; import { ToolsDownloadStatusReport } from "./tools-download"; @@ -82,6 +83,7 @@ export interface CodeQL { sourceRoot: string, processName: string | undefined, qlconfigFile: string | undefined, + overlayDatabaseMode: OverlayDatabaseMode, logger: Logger, ): Promise; /** @@ -552,6 +554,7 @@ export async function getCodeQLForCmd( sourceRoot: string, processName: string | undefined, qlconfigFile: string | undefined, + overlayDatabaseMode: OverlayDatabaseMode, logger: Logger, ) { const extraArgs = config.languages.map( @@ -606,12 +609,20 @@ export async function getCodeQLForCmd( ? "--force-overwrite" : "--overwrite"; + if (overlayDatabaseMode === OverlayDatabaseMode.Overlay) { + extraArgs.push("--overlay"); + } else if (overlayDatabaseMode === OverlayDatabaseMode.OverlayBase) { + extraArgs.push("--overlay-base"); + } + await runCli( cmd, [ "database", "init", - overwriteFlag, + ...(overlayDatabaseMode === OverlayDatabaseMode.Overlay + ? [] + : [overwriteFlag]), "--db-cluster", config.dbLocation, `--source-root=${sourceRoot}`, diff --git a/src/init-action.ts b/src/init-action.ts index 3026d8afa..c236cf70a 100644 --- a/src/init-action.ts +++ b/src/init-action.ts @@ -42,6 +42,7 @@ import { } from "./init"; import { Language } from "./languages"; import { getActionsLogger, Logger } from "./logging"; +import { OverlayDatabaseMode } from "./overlay-database-utils"; import { parseRepositoryNwo } from "./repository"; import { ToolsSource } from "./setup-codeql"; import { @@ -687,6 +688,7 @@ async function run() { "Runner.Worker.exe", getOptionalInput("registries"), apiDetails, + OverlayDatabaseMode.None, logger, ); if (tracerConfig !== undefined) { diff --git a/src/init.ts b/src/init.ts index c0e2a20bd..3216034b5 100644 --- a/src/init.ts +++ b/src/init.ts @@ -11,6 +11,7 @@ import * as configUtils from "./config-utils"; import { CodeQLDefaultVersionInfo, FeatureEnablement } from "./feature-flags"; import { Language, isScannedLanguage } from "./languages"; import { Logger } from "./logging"; +import { OverlayDatabaseMode } from "./overlay-database-utils"; import { ToolsSource } from "./setup-codeql"; import { ZstdAvailability } from "./tar"; import { ToolsDownloadStatusReport } from "./tools-download"; @@ -86,6 +87,7 @@ export async function runInit( processName: string | undefined, registriesInput: string | undefined, apiDetails: GitHubApiCombinedDetails, + overlayDatabaseMode: OverlayDatabaseMode, logger: Logger, ): Promise { fs.mkdirSync(config.dbLocation, { recursive: true }); @@ -109,6 +111,7 @@ export async function runInit( sourceRoot, processName, qlconfigFile, + overlayDatabaseMode, logger, ), ); diff --git a/src/overlay-database-utils.ts b/src/overlay-database-utils.ts new file mode 100644 index 000000000..f5fc6c761 --- /dev/null +++ b/src/overlay-database-utils.ts @@ -0,0 +1,5 @@ +export enum OverlayDatabaseMode { + Overlay = "overlay", + OverlayBase = "overlay-base", + None = "none", +}