codeql-action/src/resolve-environment.ts
2024-08-05 17:48:55 +01:00

41 lines
1.2 KiB
TypeScript

import { CODEQL_VERSION_LANGUAGE_ALIASING, getCodeQL } from "./codeql";
import { parseLanguage } from "./languages";
import { Logger } from "./logging";
import * as util from "./util";
export async function runResolveBuildEnvironment(
cmd: string,
logger: Logger,
workingDir: string | undefined,
languageInput: string,
) {
logger.startGroup(
`Attempting to resolve build environment for ${languageInput}`,
);
const codeql = await getCodeQL(cmd);
let language = languageInput;
// If the CodeQL CLI version in use supports language aliasing, give the CLI the raw language
// input. Otherwise, parse the language input and give the CLI the parsed language.
if (
!(await util.codeQlVersionAtLeast(codeql, CODEQL_VERSION_LANGUAGE_ALIASING))
) {
const parsedLanguage = parseLanguage(languageInput)?.toString();
if (parsedLanguage === undefined) {
throw new util.ConfigurationError(
`Did not recognize the language '${languageInput}'.`,
);
}
language = parsedLanguage;
}
if (workingDir !== undefined) {
logger.info(`Using ${workingDir} as the working directory.`);
}
const result = await codeql.resolveBuildEnvironment(workingDir, language);
logger.endGroup();
return result;
}