From d8a04a11132b2d558c3001b9fc0c4bafe6700788 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Wed, 13 Jan 2021 08:32:33 +0100 Subject: [PATCH] Do not fork ui-script commands Forking of the commands could lead to open processes, even if the parent was stopped with ctrl+c. --- scm-ui/ui-scripts/bin/ui-scripts.js | 53 ++++++++----------- .../ui-scripts/src/commands/plugin-publish.js | 36 ++++++------- .../ui-scripts/src/commands/plugin-watch.js | 18 ++++--- scm-ui/ui-scripts/src/commands/plugin.js | 22 ++++---- scm-ui/ui-scripts/src/commands/publish.js | 40 +++++++------- scm-ui/ui-scripts/src/commands/version.js | 16 +++--- 6 files changed, 90 insertions(+), 95 deletions(-) diff --git a/scm-ui/ui-scripts/bin/ui-scripts.js b/scm-ui/ui-scripts/bin/ui-scripts.js index 0b3b645736..57197d1af0 100755 --- a/scm-ui/ui-scripts/bin/ui-scripts.js +++ b/scm-ui/ui-scripts/bin/ui-scripts.js @@ -22,10 +22,20 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -/* eslint-disable no-console */ -const { spawnSync } = require("child_process"); -const commands = ["plugin", "plugin-watch", "plugin-publish", "publish", "version"]; +const fs = require("fs"); +const path = require("path"); + +const commandDir = path.join(__dirname, "../src/commands"); +const commands = fs + .readdirSync(commandDir) + .map(script => { + if (script.endsWith(".js")) { + return script.replace(".js", ""); + } + return undefined; + }) + .filter(cmd => !!cmd); const args = process.argv.slice(2); @@ -33,33 +43,14 @@ const commandIndex = args.findIndex(arg => { return commands.includes(arg); }); -const command = commandIndex === -1 ? args[0] : args[commandIndex]; -const nodeArgs = commandIndex > 0 ? args.slice(0, commandIndex) : []; - -if (commands.includes(command)) { - const result = spawnSync( - "node", - nodeArgs.concat(require.resolve(`../src/commands/${command}`)).concat(args.slice(commandIndex + 1)), - { stdio: "inherit" } - ); - if (result.signal) { - if (result.signal === "SIGKILL") { - console.log( - "The build failed because the process exited too early. " + - "This probably means the system ran out of memory or someone called " + - "`kill -9` on the process." - ); - } else if (result.signal === "SIGTERM") { - console.log( - "The build failed because the process exited too early. " + - "Someone might have called `kill` or `killall`, or the system could " + - "be shutting down." - ); - } - process.exit(1); - } - process.exit(result.status); +const commandName = commandIndex === -1 ? args[0] : args[commandIndex]; +if (!commandName) { + console.log(`Use plugin-scripts [${commands.join(", ")}]`); +} else if (commands.includes(commandName)) { + // eslint-disable-next-line + const command = require(path.join(commandDir, `${commandName}.js`)); + command(args.slice(commandIndex + 1)); } else { - console.log(`Unknown script "${command}".`); - console.log("Perhaps you need to update ui-scripts?"); + console.log(`Unknown script "${commandName}".`); + console.log("Perhaps you need to update plugin-scripts?"); } diff --git a/scm-ui/ui-scripts/src/commands/plugin-publish.js b/scm-ui/ui-scripts/src/commands/plugin-publish.js index 5b80cbfad2..665254c0e7 100644 --- a/scm-ui/ui-scripts/src/commands/plugin-publish.js +++ b/scm-ui/ui-scripts/src/commands/plugin-publish.js @@ -24,22 +24,22 @@ const yarn = require("../yarn"); const versions = require("../versions"); -const args = process.argv.slice(2); +module.exports = args => { + if (args.length < 1) { + console.log("usage ui-scripts publish "); + process.exit(1); + } -if (args.length < 1) { - console.log("usage ui-scripts publish "); - process.exit(1); -} - -const version = args[0]; -const index = version.indexOf("-SNAPSHOT"); -if (index > 0) { - const snapshotVersion = `${version.substring(0, index)}-${versions.createSnapshotVersion()}`; - console.log(`publish snapshot release ${snapshotVersion}`); - yarn.version(snapshotVersion); - yarn.publish(snapshotVersion); - yarn.version(version); -} else { - // ?? not sure - yarn.publish(version); -} + const version = args[0]; + const index = version.indexOf("-SNAPSHOT"); + if (index > 0) { + const snapshotVersion = `${version.substring(0, index)}-${versions.createSnapshotVersion()}`; + console.log(`publish snapshot release ${snapshotVersion}`); + yarn.version(snapshotVersion); + yarn.publish(snapshotVersion); + yarn.version(version); + } else { + // ?? not sure + yarn.publish(version); + } +}; diff --git a/scm-ui/ui-scripts/src/commands/plugin-watch.js b/scm-ui/ui-scripts/src/commands/plugin-watch.js index 9b557e706b..91c08654a9 100644 --- a/scm-ui/ui-scripts/src/commands/plugin-watch.js +++ b/scm-ui/ui-scripts/src/commands/plugin-watch.js @@ -24,11 +24,15 @@ const webpack = require("webpack"); const createPluginConfig = require("../createPluginConfig"); -const config = createPluginConfig("development"); -const compiler = webpack(config); +module.exports = () => { + const config = createPluginConfig("development"); + const compiler = webpack(config); -compiler.watch({}, (err, stats) => { - console.log(stats.toString({ - colors: true - })); -}); + compiler.watch({}, (err, stats) => { + console.log( + stats.toString({ + colors: true + }) + ); + }); +}; diff --git a/scm-ui/ui-scripts/src/commands/plugin.js b/scm-ui/ui-scripts/src/commands/plugin.js index f1416430f7..6c86e034f2 100644 --- a/scm-ui/ui-scripts/src/commands/plugin.js +++ b/scm-ui/ui-scripts/src/commands/plugin.js @@ -24,13 +24,17 @@ const webpack = require("webpack"); const createPluginConfig = require("../createPluginConfig"); -const config = createPluginConfig("production"); +module.exports = () => { + const config = createPluginConfig("production"); -webpack(config, (err, stats) => { - console.log(stats.toString({ - colors: true - })); - if (err || stats.hasErrors()) { - process.exit(1); - } -}); + webpack(config, (err, stats) => { + console.log( + stats.toString({ + colors: true + }) + ); + if (err || stats.hasErrors()) { + process.exit(1); + } + }); +}; diff --git a/scm-ui/ui-scripts/src/commands/publish.js b/scm-ui/ui-scripts/src/commands/publish.js index c41a4375ba..5e770751dc 100644 --- a/scm-ui/ui-scripts/src/commands/publish.js +++ b/scm-ui/ui-scripts/src/commands/publish.js @@ -24,26 +24,22 @@ const lerna = require("../lerna"); const versions = require("../versions"); -const args = process.argv.slice(2); - -if (args.length < 1) { - console.log("usage ui-scripts publish "); - process.exit(1); -} - -const version = args[0]; -const index = version.indexOf("-SNAPSHOT"); -if (index > 0) { - const snapshotVersion = version.substring(0, index) + "-" + versions.createSnapshotVersion(); - console.log("publish snapshot release " + snapshotVersion); - lerna.version(snapshotVersion); - lerna.publish(); - lerna.version(version); -} else { - // ?? not sure - lerna.publish(); -} - - - +module.exports = args => { + if (args.length < 1) { + console.log("usage ui-scripts publish "); + process.exit(1); + } + const version = args[0]; + const index = version.indexOf("-SNAPSHOT"); + if (index > 0) { + const snapshotVersion = `${version.substring(0, index)}-${versions.createSnapshotVersion()}`; + console.log(`publish snapshot release ${snapshotVersion}`); + lerna.version(snapshotVersion); + lerna.publish(); + lerna.version(version); + } else { + // ?? not sure + lerna.publish(); + } +}; diff --git a/scm-ui/ui-scripts/src/commands/version.js b/scm-ui/ui-scripts/src/commands/version.js index f52a28c214..32f0f0367b 100644 --- a/scm-ui/ui-scripts/src/commands/version.js +++ b/scm-ui/ui-scripts/src/commands/version.js @@ -23,13 +23,13 @@ */ const lerna = require("../lerna"); -const args = process.argv.slice(2); +module.exports = args => { + if (args.length < 1) { + console.log("usage ui-scripts version "); + process.exit(1); + } -if (args.length < 1) { - console.log("usage ui-scripts version "); - process.exit(1); -} + const version = args[0]; -const version = args[0]; - -lerna.version(version); + lerna.version(version); +};