diff --git a/.github/workflows/repotests.yml b/.github/workflows/repotests.yml index 97dcf44412..415bcf0839 100644 --- a/.github/workflows/repotests.yml +++ b/.github/workflows/repotests.yml @@ -128,6 +128,22 @@ jobs: repository: 'zoom/meetingsdk-vuejs-sample' ref: 'v2.18.0' path: 'repotests/meetingsdk-vuejs-sample' + - uses: actions/checkout@v4 + with: + repository: 'kriasoft/react-app' + path: 'repotests/react-app' + - uses: actions/checkout@v4 + with: + repository: 'patrickjuchli/basic-ftp' + path: 'repotests/basic-ftp' + - uses: actions/checkout@v4 + with: + repository: 'Atome-FE/llama-node' + path: 'repotests/llama-node' + - uses: actions/checkout@v4 + with: + repository: 'DIYgod/RSSHub' + path: 'repotests/RSSHub' - uses: actions/checkout@v4 with: repository: 'sveltejs/examples' @@ -232,6 +248,26 @@ jobs: run: | curl -s "https://get.sdkman.io" | bash if: runner.os != 'Windows' + - name: repotests react-app + run: | + FETCH_LICENSE=false bin/cdxgen.js -p -t nodejs8 repotests/react-app -o bomresults/react-app.json + node bin/evinse.js -i bomresults/react-app.json -o bomresults/react-app.evinse.json -l javascript --with-data-flow -p repotests/react-app + shell: bash + - name: repotests basic-ftp + run: | + FETCH_LICENSE=false bin/cdxgen.js -p -t nodejs10 repotests/basic-ftp -o bomresults/basic-ftp.json + node bin/evinse.js -i bomresults/basic-ftp.json -o bomresults/basic-ftp.evinse.json -l javascript --with-data-flow -p repotests/basic-ftp + shell: bash + - name: repotests llama-node + run: | + FETCH_LICENSE=false bin/cdxgen.js -p -t nodejs16 repotests/llama-node -o bomresults/llama-node.json + node bin/evinse.js -i bomresults/llama-node.json -o bomresults/llama-node.evinse.json -l javascript --with-data-flow -p repotests/llama-node + shell: bash + - name: repotests RSSHub + run: | + FETCH_LICENSE=false bin/cdxgen.js -p -t nodejs22 repotests/RSSHub -o bomresults/RSSHub.json + node bin/evinse.js -i bomresults/RSSHub.json -o bomresults/RSSHub.evinse.json -l javascript --with-data-flow -p repotests/RSSHub + shell: bash - name: repotests java-sec-code run: | bin/cdxgen.js -p -t java repotests/java-sec-code -o bomresults/bom-java-sec-code-1.json --include-formulation --include-crypto diff --git a/envcontext.js b/envcontext.js index 6c44543872..2c3f49a8d8 100644 --- a/envcontext.js +++ b/envcontext.js @@ -2,7 +2,7 @@ import { Buffer } from "node:buffer"; import { spawnSync } from "node:child_process"; import { existsSync } from "node:fs"; import { homedir } from "node:os"; -import { delimiter, join } from "node:path"; +import { delimiter, dirname, join } from "node:path"; import process from "node:process"; import { CARGO_CMD, @@ -362,6 +362,21 @@ export function isSdkmanAvailable() { return isSdkmanSetup; } +/** + * Method to check if nvm is available. + */ +export function isNvmAvailable() { + let isNvmSetup = false; + const result = spawnSync(process.env.SHELL || "bash", ["-i", "-c", "nvm"], { + encoding: "utf-8", + shell: process.env.SHELL || true, + }); + if (result.status === 0) { + isNvmSetup = true; + } + return isNvmSetup; +} + /** * Method to check if a given sdkman tool is installed and available. * @@ -491,6 +506,80 @@ export function installSdkmanTool(toolType, toolName) { return true; } +/** + * Method to check if a given nvm tool is installed and available. + * + * @param {String} toolName Tool name with version. Eg: 22.0.2-tem + * + * @returns {String} path of nvm if present, otherwise false + */ +export function getNvmToolDirectory(toolName) { + const resultWhichNode = spawnSync( + process.env.SHELL || "bash", + ["-i", "-c", `"nvm which ${toolName}"`], + { + encoding: "utf-8", + shell: process.env.SHELL || true, + }, + ); + if (DEBUG_MODE) { + if (console.stdout) { + console.log(resultWhichNode.stdout); + } + if (console.stderr) { + console.log(resultWhichNode.stderr); + } + } + if (resultWhichNode.status !== 0 || resultWhichNode.stderr) { + return; + } + + return dirname(resultWhichNode.stdout.trim()); +} + +/** + * Method to return nvm tool path + * + * @param {String} toolVersion Tool name with version. Eg: 22.0.2-tem + * + * @returns {String} path of the tool if not found installs and then returns paths. false if encounters an error. + */ +export function getOrInstallNvmTool(toolVersion) { + const nvmNodePath = getNvmToolDirectory(toolVersion); + if (!nvmNodePath) { + // nvm couldn't directly use toolName so maybe needs to be installed + const resultInstall = spawnSync( + process.env.SHELL || "bash", + ["-i", "-c", `"nvm install ${toolVersion}"`], + { + encoding: "utf-8", + shell: process.env.SHELL || true, + }, + ); + + if (DEBUG_MODE) { + if (console.stdout) { + console.log(resultInstall.stdout); + } + if (console.stderr) { + console.log(resultInstall.stderr); + } + } + + if (resultInstall.status !== 0) { + // There was some problem install the tool + // output has already been printed out + return false; + } + const nvmNodePath = getNvmToolDirectory(toolVersion); + if (nvmNodePath) { + return nvmNodePath; + } + return false; + } + return nvmNodePath; +} + /** * Retrieve sdkman tool full name */ diff --git a/envcontext.test.js b/envcontext.test.js index dcbcef80e7..57fa8df03b 100644 --- a/envcontext.test.js +++ b/envcontext.test.js @@ -11,6 +11,8 @@ import { collectRustInfo, getBranch, getOriginUrl, + isNvmAvailable, + isNvmToolAvailable, isSdkmanAvailable, isSdkmanToolAvailable, listFiles, @@ -39,3 +41,10 @@ test("sdkman tests", () => { expect(isSdkmanToolAvailable("java", "22.0.1-tem")).toBeTruthy(); } }); + +test("nvm tests", () => { + if (process.env?.SDKMAN_VERSION) { + expect(isNvmAvailable()).toBeTruthy(); + expect(isNvmToolAvailable("22")).toBeTruthy(); + } +}); diff --git a/pregen.js b/pregen.js index 5d92c23d06..47fd966e08 100644 --- a/pregen.js +++ b/pregen.js @@ -1,9 +1,13 @@ -import { mkdtempSync } from "node:fs"; +import { spawn, spawnSync } from "node:child_process"; +import { mkdtempSync, readdirSync } from "node:fs"; import { arch, platform, tmpdir } from "node:os"; -import { join } from "node:path"; +import { delimiter, join } from "node:path"; import { SDKMAN_TOOL_ALIASES, + getNvmToolDirectory, + getOrInstallNvmTool, installSdkmanTool, + isNvmAvailable, isSdkmanAvailable, } from "./envcontext.js"; import { DEBUG_MODE, hasAnyProjectType } from "./utils.js"; @@ -26,6 +30,7 @@ export function prepareEnv(filePath, options) { } // Check the pre-requisites for python preparePythonEnv(filePath, options); + prepareNodeEnv(filePath, options); } /** @@ -91,3 +96,143 @@ export function preparePythonEnv(filePath, options) { } } } + +/** + * Method to check and prepare the environment for node + * + * @param {String} filePath Path + * @param {Object} options CLI Options + */ +export function prepareNodeEnv(filePath, options) { + // check tool for windows + for (const pt of options.projectType) { + const nodeVersion = pt.replace(/\D/g, ""); + if ( + pt.startsWith("nodejs") && + nodeVersion && + !process.env.NODE_INSTALL_ARGS + ) { + if (!isNvmAvailable()) { + if (process.env.NVM_DIR) { + // for scenarios where nvm is not present, but + // we have $NVM_DIR + // custom logic to find nvmNodePath + let nvmNodePath; + const possibleNodeDir = join(process.env.NVM_DIR, "versions", "node"); + + if (!tryLoadNvmAndInstallTool(nodeVersion)) { + console.log( + `Could not install Nodejs${nodeVersion}. There is a problem with loading nvm from ${process.env.NVM_DIR}`, + ); + return; + } + + const nodeVersionArray = readdirSync(possibleNodeDir, { + withFileTypes: true, + }); + const nodeRe = new RegExp(`^v${nodeVersion}.`); + for (const nodeVersionsIter of nodeVersionArray) { + const fullPath = join(possibleNodeDir, nodeVersionsIter.name); + if ( + nodeVersionsIter.isDirectory() && + nodeRe.test(nodeVersionsIter.name) + ) { + nvmNodePath = join(fullPath, "bin"); + } + } + if (nvmNodePath) { + doNpmInstall(filePath, nvmNodePath); + } else { + console.log( + `"node version ${nodeVersion} was not found. Please install it with 'nvm install ${nodeVersion}"`, + ); + return; + } + } else { + console.log( + "Install nvm by following the instructions at https://github.com/nvm-sh/nvm", + ); + return; + } + } + // set path instead of nvm use + const nvmNodePath = getOrInstallNvmTool(nodeVersion); + doNpmInstall(filePath, nvmNodePath); + } + } +} + +/** + * If NVM_DIR is in path, however nvm command is not loaded. + * it is possible that required nodeVersion is not installed. + * This function loads nvm and install the nodeVersion + * + * @param {String} nodeVersion required version number + * + * @returns {Boolean} true if successful, otherwise false + */ +export function tryLoadNvmAndInstallTool(nodeVersion) { + const NVM_DIR = process.env.NVM_DIR; + + const command = ` + if [ -f ${NVM_DIR}/nvm.sh ]; then + . ${NVM_DIR}/nvm.sh + nvm install ${nodeVersion} + else + echo "NVM script not found at ${NVM_DIR}/nvm.sh" + exit 1 + fi + `; + + const spawnedShell = spawnSync(process.env.SHELL || "bash", ["-c", command], { + encoding: "utf-8", + shell: process.env.SHELL || true, + }); + + return result.status === 0; +} + +/** + * This method installs and create package-lock.json + * + * @param {String} filePath Path + * @param {String} nvmNodePath Path to node version in nvm + */ +export function doNpmInstall(filePath, nvmNodePath) { + // we do not install if INSTALL_ARGS set false + if (process.env.NODE_INSTALL_ARGS === false) { + return; + } + + const newPath = `${nvmNodePath}${delimiter}${process.env.PATH}`; + + const resultNpmInstall = spawnSync( + process.env.SHELL || "bash", + [ + "-i", + "-c", + `export PATH='${nvmNodePath}${delimiter}$PATH' && npm install --package-lock-only`, + ], + { + encoding: "utf-8", + shell: process.env.SHELL || true, + cwd: filePath, + env: { + ...process.env, + PATH: newPath, + }, + }, + ); + + if (resultNpmInstall.status !== 0 || resultNpmInstall.stderr) { + // There was some problem with NpmInstall + if (DEBUG_MODE) { + if (console.stdout) { + console.log(result.stdout); + } + if (console.stderr) { + console.log(result.stderr); + } + } + } +} diff --git a/types/envcontext.d.ts b/types/envcontext.d.ts index ccbac8fea8..c8aa1ca278 100644 --- a/types/envcontext.d.ts +++ b/types/envcontext.d.ts @@ -145,6 +145,10 @@ export function collectEnvInfo(dir: any): { * Method to check if sdkman is available. */ export function isSdkmanAvailable(): boolean; +/** + * Method to check if nvm is available. + */ +export function isNvmAvailable(): boolean; /** * Method to check if a given sdkman tool is installed and available. * @@ -163,6 +167,22 @@ export function isSdkmanToolAvailable(toolType: string, toolName: string): boole * @returns {Boolean} true if the tool is available. false otherwise. */ export function installSdkmanTool(toolType: string, toolName: string): boolean; +/** + * Method to check if a given nvm tool is installed and available. + * + * @param {String} toolName Tool name with version. Eg: 22.0.2-tem + * + * @returns {String} path of nvm if present, otherwise false + */ +export function getNvmToolDirectory(toolName: string): string; +/** + * Method to return nvm tool path + * + * @param {String} toolVersion Tool name with version. Eg: 22.0.2-tem + * + * @returns {String} path of the tool if not found installs and then returns paths. false if encounters an error. + */ +export function getOrInstallNvmTool(toolVersion: string): string; export const GIT_COMMAND: any; export namespace SDKMAN_TOOL_ALIASES { let java8: string; diff --git a/types/envcontext.d.ts.map b/types/envcontext.d.ts.map index 5ef7c4eae1..99b42793ac 100644 --- a/types/envcontext.d.ts.map +++ b/types/envcontext.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"envcontext.d.ts","sourceRoot":"","sources":["../envcontext.js"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AACH,wCALW,MAAM,OACN,MAAM,OAMhB;AAED;;;;;GAKG;AACH,kCAJW,MAAM,OAMhB;AAED;;;;;;GAMG;AACH,qCALW,MAAM,OACN,MAAM,OAMhB;AAED;;;;;GAKG;AACH,mCAJW,MAAM,MAsBhB;AAED;;;;;GAKG;AACH,+BAJW,MAAM,SAgChB;AAED;;;;;;;GAOG;AACH,oCALW,MAAM,oBAOhB;AAED;;;;;GAKG;AACH,qCAHW,MAAM;;;;;;;;;EAsBhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM;;;;;EAgBhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM;;;;;EAgBhB;AAED;;;;;GAKG;AACH,qCAHW,MAAM;;;;;EAkBhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM;;;;;EAehB;AAED;;;;;GAKG;AACH,qCAHW,MAAM;;;;;EAehB;AAED;;;;;GAKG;AACH,mCAHW,MAAM;;;;EAahB;AAED;;;;;;;;;IA+BC;AA0BD;;GAEG;AACH,6CAeC;AAED;;;;;;;GAOG;AACH,mFAqBC;AAED;;;;;;;GAOG;AACH,+EAwFC;AAvdD,8BAAwD"} \ No newline at end of file +{"version":3,"file":"envcontext.d.ts","sourceRoot":"","sources":["../envcontext.js"],"names":[],"mappings":"AA+BA;;;;;;GAMG;AACH,wCALW,MAAM,OACN,MAAM,OAMhB;AAED;;;;;GAKG;AACH,kCAJW,MAAM,OAMhB;AAED;;;;;;GAMG;AACH,qCALW,MAAM,OACN,MAAM,OAMhB;AAED;;;;;GAKG;AACH,mCAJW,MAAM,MAsBhB;AAED;;;;;GAKG;AACH,+BAJW,MAAM,SAgChB;AAED;;;;;;;GAOG;AACH,oCALW,MAAM,oBAOhB;AAED;;;;;GAKG;AACH,qCAHW,MAAM;;;;;;;;;EAsBhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM;;;;;EAgBhB;AAED;;;;;GAKG;AACH,uCAHW,MAAM;;;;;EAgBhB;AAED;;;;;GAKG;AACH,qCAHW,MAAM;;;;;EAkBhB;AAED;;;;;GAKG;AACH,oCAHW,MAAM;;;;;EAehB;AAED;;;;;GAKG;AACH,qCAHW,MAAM;;;;;EAehB;AAED;;;;;GAKG;AACH,mCAHW,MAAM;;;;EAahB;AAED;;;;;;;;;IA+BC;AA0BD;;GAEG;AACH,6CAeC;AAED;;GAEG;AACH,0CAUC;AAED;;;;;;;GAOG;AACH,mFAqBC;AAED;;;;;;;GAOG;AACH,+EAwFC;AAED;;;;;;GAMG;AACH,8DAsBC;AAED;;;;;;GAMG;AACH,iEAkCC;AAhjBD,8BAAwD"} \ No newline at end of file diff --git a/types/pregen.d.ts b/types/pregen.d.ts index 9cd4494af6..552552582e 100644 --- a/types/pregen.d.ts +++ b/types/pregen.d.ts @@ -18,4 +18,28 @@ export function prepareSdkmanBuild(projectType: string): boolean; * @param {Object} options CLI Options */ export function preparePythonEnv(filePath: string, options: any): void; +/** + * Method to check and prepare the environment for node + * + * @param {String} filePath Path + * @param {Object} options CLI Options + */ +export function prepareNodeEnv(filePath: string, options: any): void; +/** + * If NVM_DIR is in path, however nvm command is not loaded. + * it is possible that required nodeVersion is not installed. + * This function loads nvm and install the nodeVersion + * + * @param {String} nodeVersion required version number + * + * @returns {Boolean} true if successful, otherwise false + */ +export function tryLoadNvmAndInstallTool(nodeVersion: string): boolean; +/** + * This method installs and create package-lock.json + * + * @param {String} filePath Path + * @param {String} nvmNodePath Path to node version in nvm + */ +export function doNpmInstall(filePath: string, nvmNodePath: string): void; //# sourceMappingURL=pregen.d.ts.map \ No newline at end of file diff --git a/types/pregen.d.ts.map b/types/pregen.d.ts.map index cc67eace6c..73d04db75f 100644 --- a/types/pregen.d.ts.map +++ b/types/pregen.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"pregen.d.ts","sourceRoot":"","sources":["../pregen.js"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,iEAYC;AAED;;;;GAIG;AACH,iEASC;AAED;;;;;GAKG;AACH,uEAwCC"} \ No newline at end of file +{"version":3,"file":"pregen.d.ts","sourceRoot":"","sources":["../pregen.js"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,iEAaC;AAED;;;;GAIG;AACH,iEASC;AAED;;;;;GAKG;AACH,uEAwCC;AAED;;;;;GAKG;AACH,qEAyDC;AAED;;;;;;;;GAQG;AACH,uEAmBC;AAED;;;;;GAKG;AACH,0EAqCC"} \ No newline at end of file diff --git a/types/utils.d.ts.map b/types/utils.d.ts.map index 99e2ec1ece..9dcb3576a3 100644 --- a/types/utils.d.ts.map +++ b/types/utils.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.js"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../utils.js"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/utils.js b/utils.js index 68e6dd3b2a..2efbd10ce3 100644 --- a/utils.js +++ b/utils.js @@ -268,6 +268,14 @@ export const PROJECT_TYPE_ALIASES = { "npm", "pnpm", "nodejs", + "nodejs8", + "nodejs10", + "nodejs12", + "nodejs14", + "nodejs16", + "nodejs18", + "nodejs20", + "nodejs22", "js", "javascript", "typescript",