41 lines
1.2 KiB
TypeScript
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;
|
|
}
|