Add FF for config validation

This commit is contained in:
Michael B. Gale
2025-10-17 14:05:57 +01:00
parent d7a8ae5fdd
commit 2c8f4891d1
19 changed files with 1477 additions and 39 deletions
+5
View File
@@ -119305,6 +119305,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
+5
View File
@@ -91297,6 +91297,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
var FEATURE_FLAGS_FILE_NAME = "cached-feature-flags.json";
+5
View File
@@ -80043,6 +80043,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
var FEATURE_FLAGS_FILE_NAME = "cached-feature-flags.json";
+5
View File
@@ -129435,6 +129435,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
var FEATURE_FLAGS_FILE_NAME = "cached-feature-flags.json";
+39 -23
View File
@@ -88057,24 +88057,26 @@ function generateCodeScanningConfig(logger, originalUserInput, augmentationPrope
}
return augmentedConfig;
}
function parseUserConfig(logger, pathInput, contents) {
function parseUserConfig(logger, pathInput, contents, validateConfig) {
try {
const schema2 = (
// eslint-disable-next-line @typescript-eslint/no-require-imports
require_db_config_schema()
);
const doc = load(contents);
const result = new jsonschema.Validator().validate(doc, schema2);
if (result.errors.length > 0) {
for (const error2 of result.errors) {
logger.error(error2.stack);
if (validateConfig) {
const result = new jsonschema.Validator().validate(doc, schema2);
if (result.errors.length > 0) {
for (const error2 of result.errors) {
logger.error(error2.stack);
}
throw new ConfigurationError(
getInvalidConfigFileMessage(
pathInput,
result.errors.map((e) => e.stack)
)
);
}
throw new ConfigurationError(
getInvalidConfigFileMessage(
pathInput,
result.errors.map((e) => e.stack)
)
);
}
return doc;
} catch (error2) {
@@ -88683,6 +88685,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
var FEATURE_FLAGS_FILE_NAME = "cached-feature-flags.json";
@@ -89288,7 +89295,7 @@ async function downloadCacheWithTime(trapCachingEnabled, codeQL, languages, logg
}
return { trapCaches, trapCacheDownloadTime };
}
async function loadUserConfig(logger, configFile, workspacePath, apiDetails, tempDir) {
async function loadUserConfig(logger, configFile, workspacePath, apiDetails, tempDir, validateConfig) {
if (isLocal(configFile)) {
if (configFile !== userConfigFromActionPath(tempDir)) {
configFile = path11.resolve(workspacePath, configFile);
@@ -89298,9 +89305,14 @@ async function loadUserConfig(logger, configFile, workspacePath, apiDetails, tem
);
}
}
return getLocalConfig(logger, configFile);
return getLocalConfig(logger, configFile, validateConfig);
} else {
return await getRemoteConfig(logger, configFile, apiDetails);
return await getRemoteConfig(
logger,
configFile,
apiDetails,
validateConfig
);
}
}
var OVERLAY_ANALYSIS_FEATURES = {
@@ -89429,7 +89441,7 @@ function userConfigFromActionPath(tempDir) {
function hasQueryCustomisation(userConfig) {
return isDefined(userConfig["disable-default-queries"]) || isDefined(userConfig.queries) || isDefined(userConfig["query-filters"]);
}
async function initConfig(inputs) {
async function initConfig(features, inputs) {
const { logger, tempDir } = inputs;
if (inputs.configInput) {
if (inputs.configFile) {
@@ -89446,12 +89458,14 @@ async function initConfig(inputs) {
logger.debug("No configuration file was provided");
} else {
logger.debug(`Using configuration file: ${inputs.configFile}`);
const validateConfig = await features.getValue("validate_db_config" /* ValidateDbConfig */);
userConfig = await loadUserConfig(
logger,
inputs.configFile,
inputs.workspacePath,
inputs.apiDetails,
tempDir
tempDir,
validateConfig
);
}
const config = await initActionState(inputs, userConfig);
@@ -89513,7 +89527,7 @@ function isLocal(configPath) {
}
return configPath.indexOf("@") === -1;
}
function getLocalConfig(logger, configFile) {
function getLocalConfig(logger, configFile, validateConfig) {
if (!fs9.existsSync(configFile)) {
throw new ConfigurationError(
getConfigFileDoesNotExistErrorMessage(configFile)
@@ -89522,10 +89536,11 @@ function getLocalConfig(logger, configFile) {
return parseUserConfig(
logger,
configFile,
fs9.readFileSync(configFile, "utf-8")
fs9.readFileSync(configFile, "utf-8"),
validateConfig
);
}
async function getRemoteConfig(logger, configFile, apiDetails) {
async function getRemoteConfig(logger, configFile, apiDetails, validateConfig) {
const format = new RegExp(
"(?<owner>[^/]+)/(?<repo>[^/]+)/(?<path>[^@]+)@(?<ref>.*)"
);
@@ -89556,7 +89571,8 @@ async function getRemoteConfig(logger, configFile, apiDetails) {
return parseUserConfig(
logger,
configFile,
Buffer.from(fileContents, "base64").toString("binary")
Buffer.from(fileContents, "base64").toString("binary"),
validateConfig
);
}
function getPathToParsedConfigFile(tempDir) {
@@ -91668,9 +91684,9 @@ async function initCodeQL(toolsInput, apiDetails, tempDir, variant, defaultCliVe
zstdAvailability
};
}
async function initConfig2(inputs) {
async function initConfig2(features, inputs) {
return await withGroupAsync("Load language configuration", async () => {
return await initConfig(inputs);
return await initConfig(features, inputs);
});
}
async function runDatabaseInitCluster(databaseInitEnvironment, codeql, config, sourceRoot, processName, qlconfigFile, logger) {
@@ -92356,7 +92372,7 @@ async function run() {
}
}
analysisKinds = await getAnalysisKinds(logger);
config = await initConfig2({
config = await initConfig2(features, {
analysisKinds,
languagesInput: getOptionalInput("languages"),
queriesInput: getOptionalInput("queries"),
+5
View File
@@ -80034,6 +80034,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
+1306
View File
File diff suppressed because it is too large Load Diff
+5
View File
@@ -118711,6 +118711,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
+5
View File
@@ -96825,6 +96825,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
+5
View File
@@ -89534,6 +89534,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
+5
View File
@@ -118877,6 +118877,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
+5
View File
@@ -89446,6 +89446,11 @@ var featureConfig = {
defaultValue: false,
envVar: "CODEQL_ACTION_JAVA_MINIMIZE_DEPENDENCY_JARS",
minimumVersion: "2.23.0"
},
["validate_db_config" /* ValidateDbConfig */]: {
defaultValue: false,
envVar: "CODEQL_ACTION_VALIDATE_DB_CONFIG",
minimumVersion: void 0
}
};
var FEATURE_FLAGS_FILE_NAME = "cached-feature-flags.json";