Add computedConfig property to Config type

This commit is contained in:
Michael B. Gale
2025-09-02 12:27:58 +01:00
parent 9f5a64c949
commit c4d2772a75
14 changed files with 982 additions and 1336 deletions
+5
View File
@@ -18,6 +18,7 @@ import {
AugmentationProperties,
Config,
defaultAugmentationProperties,
generateCodeScanningConfig,
} from "./config-utils";
import * as defaults from "./defaults.json";
import { DocUrl } from "./doc-url";
@@ -504,6 +505,10 @@ const injectedConfigMacro = test.macro({
tempDir,
augmentationProperties,
};
thisStubConfig.computedConfig = generateCodeScanningConfig(
thisStubConfig.originalUserInput,
thisStubConfig.augmentationProperties,
);
await codeqlObject.databaseInitCluster(
thisStubConfig,
+3 -7
View File
@@ -13,7 +13,7 @@ import {
} from "./actions-util";
import * as api from "./api-client";
import { CliError, wrapCliConfigurationError } from "./cli-errors";
import { generateCodeScanningConfig, type Config } from "./config-utils";
import { type Config } from "./config-utils";
import { DocUrl } from "./doc-url";
import { EnvVar } from "./environment";
import {
@@ -1161,19 +1161,15 @@ async function writeCodeScanningConfigFile(
logger: Logger,
): Promise<string> {
const codeScanningConfigFile = getGeneratedCodeScanningConfigPath(config);
const augmentedConfig = generateCodeScanningConfig(
config.originalUserInput,
config.augmentationProperties,
);
logger.info(
`Writing augmented user configuration file to ${codeScanningConfigFile}`,
);
logger.startGroup("Augmented user configuration file contents");
logger.info(yaml.dump(augmentedConfig));
logger.info(yaml.dump(config.computedConfig));
logger.endGroup();
fs.writeFileSync(codeScanningConfigFile, yaml.dump(augmentedConfig));
fs.writeFileSync(codeScanningConfigFile, yaml.dump(config.computedConfig));
return codeScanningConfigFile;
}
+10 -7
View File
@@ -322,18 +322,21 @@ test("load non-empty input", async (t) => {
fs.mkdirSync(path.join(tempDir, "foo"));
const userConfig: configUtils.UserConfig = {
name: "my config",
"disable-default-queries": true,
queries: [{ uses: "./foo" }],
"paths-ignore": ["a", "b"],
paths: ["c/d"],
};
// And the config we expect it to parse to
const expectedConfig: configUtils.Config = {
analysisKinds: [AnalysisKind.CodeScanning],
languages: [KnownLanguage.javascript],
buildMode: BuildMode.None,
originalUserInput: {
name: "my config",
"disable-default-queries": true,
queries: [{ uses: "./foo" }],
"paths-ignore": ["a", "b"],
paths: ["c/d"],
},
originalUserInput: userConfig,
computedConfig: userConfig,
tempDir,
codeQLCmd: codeql.getPath(),
gitHubVersion: githubVersion,
+18 -1
View File
@@ -145,8 +145,17 @@ export interface Config {
*/
debugDatabaseName: string;
/**
* Describes how to augment the user configuration with inputs from the action.
*/
augmentationProperties: AugmentationProperties;
/**
* The configuration we computed by combining `originalUserInput` with `augmentationProperties`,
* as well as adjustments made to it based on unsupported or required options.
*/
computedConfig: UserConfig;
/**
* Partial map from languages to locations of TRAP caches for that language.
* If a key is omitted, then TRAP caching should not be used for that language.
@@ -576,6 +585,7 @@ export async function getDefaultConfig({
languages,
buildMode,
originalUserInput: {},
computedConfig: {},
tempDir,
codeQLCmd: codeql.getPath(),
gitHubVersion: githubVersion,
@@ -1101,6 +1111,13 @@ export async function initConfig(inputs: InitConfigInputs): Promise<Config> {
const augmentationProperties = config.augmentationProperties;
config.originalUserInput = userConfig;
// Compute the full Code Scanning configuration that combines the configuration from the
// configuration file / `config` input with other inputs, such as `queries`.
config.computedConfig = generateCodeScanningConfig(
userConfig,
config.augmentationProperties,
);
// The choice of overlay database mode depends on the selection of languages
// and queries, which in turn depends on the user config and the augmentation
// properties. So we need to calculate the overlay database mode after the
@@ -1113,7 +1130,7 @@ export async function initConfig(inputs: InitConfigInputs): Promise<Config> {
config.languages,
inputs.sourceRoot,
config.buildMode,
generateCodeScanningConfig(userConfig, augmentationProperties),
config.computedConfig,
logger,
);
logger.info(
+1
View File
@@ -360,6 +360,7 @@ export function createTestConfig(overrides: Partial<Config>): Config {
languages: [],
buildMode: undefined,
originalUserInput: {},
computedConfig: {},
tempDir: "",
codeQLCmd: "",
gitHubVersion: {