import { CODEQL_VERSION_RESOLVE_ENVIRONMENT, getCodeQL } from "./codeql";
import { Language } from "./languages";
import { Logger } from "./logging";
import * as util from "./util";

export async function runResolveBuildEnvironment(
  cmd: string,
  logger: Logger,
  workingDir: string | undefined,
  language: Language
) {
  logger.startGroup(`Attempting to resolve build environment for ${language}`);

  const codeql = await getCodeQL(cmd);
  let result = {};

  // If the CodeQL version in use does not support the `resolve build-environment`
  // command, just return an empty configuration. Otherwise invoke the CLI.
  if (
    !(await util.codeQlVersionAbove(codeql, CODEQL_VERSION_RESOLVE_ENVIRONMENT))
  ) {
    logger.warning(
      "Unsupported CodeQL CLI version for `resolve build-environment` command, " +
        "returning an empty configuration."
    );
  } else {
    if (workingDir !== undefined) {
      logger.info(`Using ${workingDir} as the working directory.`);
    }

    result = await codeql.resolveBuildEnvironment(workingDir, language);
  }

  logger.endGroup();
  return result;
}
