Infer compression method from URL

Using the downloaded path is unreliable since we may have removed the file extension.
This commit is contained in:
Henry Mercer 2024-08-23 23:19:19 +01:00
parent 379271d235
commit 27dbb1ab21
6 changed files with 48 additions and 36 deletions

7
lib/setup-codeql.js generated
View file

@ -390,6 +390,7 @@ const downloadCodeQL = async function (codeqlURL, maybeBundleVersion, maybeCliVe
logger.debug("Downloading CodeQL tools without an authorization token.");
}
logger.info(`Downloading CodeQL tools from ${codeqlURL} . This may take a while.`);
const compressionMethod = tar.inferCompressionMethod(codeqlURL);
const dest = path.join(tempDir, (0, uuid_1.v4)());
const finalHeaders = Object.assign({ "User-Agent": "CodeQL Action" }, headers);
const toolsDownloadStart = perf_hooks_1.performance.now();
@ -398,7 +399,7 @@ const downloadCodeQL = async function (codeqlURL, maybeBundleVersion, maybeCliVe
logger.debug(`Finished downloading CodeQL bundle to ${archivedBundlePath} (${downloadDurationMs} ms).`);
logger.debug("Extracting CodeQL bundle.");
const extractionStart = perf_hooks_1.performance.now();
const { compressionMethod, outputPath: extractedBundlePath } = await tar.extract(archivedBundlePath);
const extractedBundlePath = await tar.extract(archivedBundlePath, compressionMethod);
const extractionDurationMs = Math.round(perf_hooks_1.performance.now() - extractionStart);
logger.debug(`Finished extracting CodeQL bundle to ${extractedBundlePath} (${extractionDurationMs} ms).`);
await cleanUpGlob(archivedBundlePath, "CodeQL bundle archive", logger);
@ -476,8 +477,8 @@ async function setupCodeQLBundle(toolsInput, apiDetails, tempDir, variant, defau
let toolsSource;
switch (source.sourceType) {
case "local": {
const { outputPath } = await tar.extract(source.codeqlTarPath);
codeqlFolder = outputPath;
const compressionMethod = tar.inferCompressionMethod(source.codeqlTarPath);
codeqlFolder = await tar.extract(source.codeqlTarPath, compressionMethod);
toolsSource = ToolsSource.Local;
break;
}