diff --git a/npm/ci-requirements.sh b/npm/ci-requirements.sh index 69d612a51..f58c13a24 100755 --- a/npm/ci-requirements.sh +++ b/npm/ci-requirements.sh @@ -39,7 +39,7 @@ pushd ./codegens/csharp-restsharp &>/dev/null; sudo apt-get install dotnet-sdk-6.0 dotnet new console -o testProject -f net6.0 pushd ./testProject &>/dev/null; - dotnet add package RestSharp + dotnet add package RestSharp --version 110.0.0 popd &>/dev/null; popd &>/dev/null; diff --git a/npm/deepinstall.js b/npm/deepinstall.js index e3741a9af..3d392578a 100644 --- a/npm/deepinstall.js +++ b/npm/deepinstall.js @@ -1,6 +1,8 @@ var shell = require('shelljs'), path = require('path'), async = require('async'), + { detect } = require('detect-package-manager'), + pm, PRODUCTION_FLAG = '', getSubfolders, fs = require('fs'), @@ -8,13 +10,6 @@ var shell = require('shelljs'), const args = process.argv, PATH_TO_CODEGENS_FOLDER = path.resolve(__dirname, '../codegens'); -if (args[2] && args[2] === 'dev') { - console.log('Dev flag detected running npm install'); -} -else { - PRODUCTION_FLAG = '--no-audit --production'; -} - getSubfolders = (folder) => { return fs.readdirSync(folder) .map((subfolder) => { return { path: path.join(folder, subfolder), name: subfolder}; }) @@ -23,6 +18,20 @@ getSubfolders = (folder) => { async.series([ function (next) { + detect().then((res) => { + pm = res; + console.log('Detected package manager: ' + pm); + return next(); + }); + }, + function (next) { + if (args[2] && args[2] === 'dev') { + console.log('Dev flag detected running ' + pm + ' install'); + } + else { + PRODUCTION_FLAG = '--no-audit --production'; + } + console.log('Running pre-package script'); var prepackagePath = path.resolve(__dirname, 'pre-package.js'), commandOutput = shell.exec(`node "${prepackagePath}"`); @@ -42,11 +51,11 @@ async.series([ var commandOut; - console.log(codegen.name + ': npm install ' + PRODUCTION_FLAG); - commandOut = shell.exec('npm install ' + PRODUCTION_FLAG, { silent: true }); + console.log(codegen.name + ': ' + pm + ' install ' + PRODUCTION_FLAG); + commandOut = shell.exec(pm + ' install ' + PRODUCTION_FLAG, { silent: true }); if (commandOut.code !== 0) { - console.error('Failed to run npm install on codegen ' + codegen.name + ', here is the error:'); + console.error('Failed to run ' + pm + ' install on codegen ' + codegen.name + ', here is the error:'); return next(commandOut.stderr); } console.log(commandOut.stdout); diff --git a/package-lock.json b/package-lock.json index 7489b7a0b..cd5e75a03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1568,6 +1568,104 @@ "minimalistic-assert": "^1.0.0" } }, + "detect-package-manager": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-3.0.2.tgz", + "integrity": "sha512-8JFjJHutStYrfWwzfretQoyNGoZVW1Fsrp4JO9spa7h/fBfwgTMEIy4/LBzRDGsxwVPHU0q+T9YvwLDJoOApLQ==", + "requires": { + "execa": "^5.1.1" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "detective": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", @@ -3246,6 +3344,11 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -3683,8 +3786,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isobject": { "version": "3.0.1", @@ -4311,6 +4413,11 @@ } } }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", @@ -6591,6 +6698,11 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", diff --git a/package.json b/package.json index c511ad9b0..40769a1df 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,9 @@ "license": "Apache-2.0", "homepage": "https://github.com/postmanlabs/code-generators", "dependencies": { - "lodash": "4.17.21", "async": "3.2.2", + "detect-package-manager": "3.0.2", + "lodash": "4.17.21", "path": "0.12.7", "postman-collection": "4.0.0", "shelljs": "0.8.5" @@ -35,18 +36,18 @@ "browserify": "14.5.0", "chai": "4.3.7", "chalk": "2.4.2", - "eslint": "5.16.0", "dependency-check": "3.0.0", "editorconfig": "0.15.3", + "eslint": "5.16.0", "eslint-plugin-jsdoc": "3.15.1", "eslint-plugin-lodash": "2.7.0", "eslint-plugin-mocha": "4.12.1", "eslint-plugin-security": "1.5.0", "istanbul": "0.4.5", "js-yaml": "3.14.1", - "newman": "5.3.2", "jsdoc": "3.6.10", "mocha": "6.2.3", + "newman": "5.3.2", "nyc": "14.1.1", "parse-gitignore": "1.0.1", "pretty-ms": "3.2.0",