mirror of
https://github.com/SonarSource/sonarqube-scan-action.git
synced 2025-12-13 18:01:15 +00:00
59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
import * as core from "@actions/core";
|
|
import * as tc from "@actions/tool-cache";
|
|
import * as os from "os";
|
|
import * as path from "path";
|
|
import {
|
|
getPlatformFlavor,
|
|
getScannerDownloadURL,
|
|
scannerDirName,
|
|
} from "./utils";
|
|
|
|
const TOOLNAME = "sonar-scanner-cli";
|
|
|
|
/**
|
|
* Download the Sonar Scanner CLI for the current environment and cache it.
|
|
*/
|
|
export async function installSonarScanner({
|
|
scannerVersion,
|
|
scannerBinariesUrl,
|
|
}) {
|
|
const flavor = getPlatformFlavor(os.platform(), os.arch());
|
|
|
|
// Check if tool is already cached
|
|
let toolDir = tc.find(TOOLNAME, scannerVersion, flavor);
|
|
|
|
if (!toolDir) {
|
|
console.log(
|
|
`Installing Sonar Scanner CLI ${scannerVersion} for ${flavor}...`
|
|
);
|
|
|
|
const downloadUrl = getScannerDownloadURL({
|
|
scannerBinariesUrl,
|
|
scannerVersion,
|
|
flavor,
|
|
});
|
|
|
|
console.log(`Downloading from: ${downloadUrl}`);
|
|
|
|
const downloadPath = await tc.downloadTool(downloadUrl);
|
|
const extractedPath = await tc.extractZip(downloadPath);
|
|
|
|
// Find the actual scanner directory inside the extracted folder
|
|
const scannerPath = path.join(
|
|
extractedPath,
|
|
scannerDirName(scannerVersion, flavor)
|
|
);
|
|
|
|
toolDir = await tc.cacheDir(scannerPath, TOOLNAME, scannerVersion, flavor);
|
|
|
|
console.log(`Sonar Scanner CLI cached to: ${toolDir}`);
|
|
} else {
|
|
console.log(`Using cached Sonar Scanner CLI from: ${toolDir}`);
|
|
}
|
|
|
|
// Add the bin directory to PATH
|
|
const binDir = path.join(toolDir, "bin");
|
|
core.addPath(binDir);
|
|
|
|
return toolDir;
|
|
}
|