@@ -29844,6 +29844,92 @@ function requireToolCache () {
2984429844
2984529845var toolCacheExports = requireToolCache();
2984629846
29847+ const platformFlavor = {
29848+ linux: {
29849+ x64: "linux-x64",
29850+ arm64: "linux-aarch64",
29851+ },
29852+ win32: {
29853+ x64: "windows-x64",
29854+ },
29855+ darwin: {
29856+ x64: "macosx-x64",
29857+ arm64: "macosx-aarch64",
29858+ },
29859+ };
29860+
29861+ function getPlatformFlavor(platform, arch) {
29862+ const flavor = platformFlavor[platform]?.[arch];
29863+
29864+ if (!flavor) {
29865+ throw new Error(`Platform ${platform} ${arch} not supported`);
29866+ }
29867+
29868+ return flavor;
29869+ }
29870+
29871+ function getScannerDownloadURL({
29872+ scannerBinariesUrl,
29873+ scannerVersion,
29874+ flavor,
29875+ }) {
29876+ const trimURL = scannerBinariesUrl.replace(/\/$/, "");
29877+ return `${trimURL}/sonar-scanner-cli-${scannerVersion}-${flavor}.zip`;
29878+ }
29879+
29880+ const scannerDirName = (version, flavor) =>
29881+ `sonar-scanner-${version}-${flavor}`;
29882+
29883+ const TOOLNAME = "sonar-scanner-cli";
29884+
29885+ /**
29886+ * Download the Sonar Scanner CLI for the current environment and cache it.
29887+ */
29888+ async function installSonarScanner({
29889+ scannerVersion,
29890+ scannerBinariesUrl,
29891+ }) {
29892+ const flavor = getPlatformFlavor(require$$0.platform(), require$$0.arch());
29893+
29894+ // Check if tool is already cached
29895+ let toolDir = toolCacheExports.find(TOOLNAME, scannerVersion, flavor);
29896+
29897+ if (!toolDir) {
29898+ console.log(
29899+ `Installing Sonar Scanner CLI ${scannerVersion} for ${flavor}...`
29900+ );
29901+
29902+ const downloadUrl = getScannerDownloadURL({
29903+ scannerBinariesUrl,
29904+ scannerVersion,
29905+ flavor,
29906+ });
29907+
29908+ console.log(`Downloading from: ${downloadUrl}`);
29909+
29910+ const downloadPath = await toolCacheExports.downloadTool(downloadUrl);
29911+ const extractedPath = await toolCacheExports.extractZip(downloadPath);
29912+
29913+ // Find the actual scanner directory inside the extracted folder
29914+ const scannerPath = path.join(
29915+ extractedPath,
29916+ scannerDirName(scannerVersion, flavor)
29917+ );
29918+
29919+ toolDir = await toolCacheExports.cacheDir(scannerPath, TOOLNAME, scannerVersion, flavor);
29920+
29921+ console.log(`Sonar Scanner CLI cached to: ${toolDir}`);
29922+ } else {
29923+ console.log(`Using cached Sonar Scanner CLI from: ${toolDir}`);
29924+ }
29925+
29926+ // Add the bin directory to PATH
29927+ const binDir = path.join(toolDir, "bin");
29928+ coreExports.addPath(binDir);
29929+
29930+ return toolDir;
29931+ }
29932+
2984729933var execExports = requireExec();
2984829934
2984929935function parseArgsStringToArgv(value, env, file) {
@@ -30029,8 +30115,8 @@ function validateScannerVersion(version) {
3002930115 }
3003030116}
3003130117
30032- function checkSonarToken(core) {
30033- if (!process.env.SONAR_TOKEN) {
30118+ function checkSonarToken(core, sonarToken ) {
30119+ {
3003430120 core.warning(
3003530121 "Running this GitHub Action without SONAR_TOKEN is not recommended"
3003630122 );
@@ -30058,44 +30144,6 @@ function checkGradleProject(core, projectBaseDir) {
3005830144 }
3005930145}
3006030146
30061- const platformFlavor = {
30062- linux: {
30063- x64: "linux-x64",
30064- arm64: "linux-aarch64",
30065- },
30066- win32: {
30067- x64: "windows-x64",
30068- },
30069- darwin: {
30070- x64: "macosx-x64",
30071- arm64: "macosx-aarch64",
30072- },
30073- };
30074-
30075- function getPlatformFlavor(platform, arch) {
30076- const flavor = platformFlavor[platform]?.[arch];
30077-
30078- if (!flavor) {
30079- throw new Error(`Platform ${platform} ${arch} not supported`);
30080- }
30081-
30082- return flavor;
30083- }
30084-
30085- function getScannerDownloadURL({
30086- scannerBinariesUrl,
30087- scannerVersion,
30088- flavor,
30089- }) {
30090- const trimURL = scannerBinariesUrl.replace(/\/$/, "");
30091- return `${trimURL}/sonar-scanner-cli-${scannerVersion}-${flavor}.zip`;
30092- }
30093-
30094- const scannerDirName = (version, flavor) =>
30095- `sonar-scanner-${version}-${flavor}`;
30096-
30097- const TOOLNAME = "sonar-scanner-cli";
30098-
3009930147/**
3010030148 * Inputs are defined in action.yml
3010130149 */
@@ -30108,13 +30156,20 @@ function getInputs() {
3010830156 return { args, projectBaseDir, scannerBinariesUrl, scannerVersion };
3010930157}
3011030158
30111- function getRunnerEnv() {
30159+ /**
30160+ * These RUNNER env variables come from GitHub by default.
30161+ * See https://docs.github.com/en/actions/reference/workflows-and-actions/variables#default-environment-variables
30162+ *
30163+ * The others are optional env variables provided by the user of the action
30164+ */
30165+ function getEnvVariables() {
3011230166 return {
30113- RUNNER_OS: process.env.RUNNER_OS,
30114- SONARCLOUD_URL: process.env.SONARCLOUD_URL,
3011530167 RUNNER_DEBUG: process.env.RUNNER_DEBUG,
30116- SONAR_ROOT_CERT : process.env.SONAR_ROOT_CERT ,
30168+ RUNNER_OS : process.env.RUNNER_OS ,
3011730169 RUNNER_TEMP: process.env.RUNNER_TEMP,
30170+ SONAR_ROOT_CERT: process.env.SONAR_ROOT_CERT,
30171+ SONARCLOUD_URL: process.env.SONARCLOUD_URL,
30172+ SONAR_TOKEN: process.env.SONAR_TOKEN,
3011830173 };
3011930174}
3012030175
@@ -30132,64 +30187,20 @@ function runSanityChecks(inputs) {
3013230187 }
3013330188}
3013430189
30135- async function installSonarScannerCLI({ scannerVersion, scannerBinariesUrl }) {
30136- const flavor = getPlatformFlavor(require$$0.platform(), require$$0.arch());
30137-
30138- // Check if tool is already cached
30139- let toolDir = toolCacheExports.find(TOOLNAME, scannerVersion, flavor);
30140-
30141- if (!toolDir) {
30142- console.log(
30143- `Installing Sonar Scanner CLI ${scannerVersion} for ${flavor}...`
30144- );
30145-
30146- const downloadUrl = getScannerDownloadURL({
30147- scannerBinariesUrl,
30148- scannerVersion,
30149- flavor,
30150- });
30151-
30152- console.log(`Downloading from: ${downloadUrl}`);
30153-
30154- const downloadPath = await toolCacheExports.downloadTool(downloadUrl);
30155- const extractedPath = await toolCacheExports.extractZip(downloadPath);
30156-
30157- // Find the actual scanner directory inside the extracted folder
30158- const scannerPath = path.join(
30159- extractedPath,
30160- scannerDirName(scannerVersion, flavor)
30161- );
30162-
30163- toolDir = await toolCacheExports.cacheDir(scannerPath, TOOLNAME, scannerVersion, flavor);
30164-
30165- console.log(`Sonar Scanner CLI cached to: ${toolDir}`);
30166- } else {
30167- console.log(`Using cached Sonar Scanner CLI from: ${toolDir}`);
30168- }
30169-
30170- // Add the bin directory to PATH
30171- const binDir = path.join(toolDir, "bin");
30172- coreExports.addPath(binDir);
30173-
30174- return toolDir;
30175- }
30176-
3017730190async function run() {
3017830191 try {
3017930192 const { args, projectBaseDir, scannerVersion, scannerBinariesUrl } =
3018030193 getInputs();
30194+ const runnerEnv = getEnvVariables();
30195+ const { sonarToken } = runnerEnv;
3018130196
30182- // Run sanity checks first
30183- runSanityChecks({ projectBaseDir, scannerVersion });
30197+ runSanityChecks({ projectBaseDir, scannerVersion, sonarToken });
3018430198
30185- // Install Sonar Scanner CLI using @actions/tool-cache
30186- const scannerDir = await installSonarScannerCLI({
30199+ const scannerDir = await installSonarScanner({
3018730200 scannerVersion,
3018830201 scannerBinariesUrl,
3018930202 });
3019030203
30191- // Run the sonar scanner
30192- const runnerEnv = getRunnerEnv();
3019330204 await runSonarScanner(args, projectBaseDir, scannerDir, runnerEnv);
3019430205 } catch (error) {
3019530206 coreExports.setFailed(`Action failed: ${error.message}`);
0 commit comments