mirror of
https://github.com/github/codeql-action.git
synced 2026-04-27 17:39:15 +00:00
Add computedConfig property to Config type
This commit is contained in:
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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(
|
||||
|
||||
@@ -360,6 +360,7 @@ export function createTestConfig(overrides: Partial<Config>): Config {
|
||||
languages: [],
|
||||
buildMode: undefined,
|
||||
originalUserInput: {},
|
||||
computedConfig: {},
|
||||
tempDir: "",
|
||||
codeQLCmd: "",
|
||||
gitHubVersion: {
|
||||
|
||||
Reference in New Issue
Block a user