From 1e517469c3d0b968e743c51fb4d28a8bdbedcb67 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Thu, 25 Jan 2018 10:16:14 -0700 Subject: [PATCH 1/2] Fail on plugin installation fail --- bin/cli-plugins | 86 +++++++++++++++++++++++++------------------------ 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/bin/cli-plugins b/bin/cli-plugins index a99e97649..883682ede 100755 --- a/bin/cli-plugins +++ b/bin/cli-plugins @@ -235,7 +235,7 @@ async function reconcileLocalPlugins({ skipRemote, dryRun }) { if (output.status) { throw new Error( - 'Could not install local plugin dependencies, errors occured during install' + 'Could not install local plugin dependencies, errors occurred during install' ); } @@ -253,59 +253,61 @@ async function reconcilePluginDeps({ dryRun, upgradeRemote, }) { - let startTime = new Date(); + try { + let startTime = new Date(); - // We don't need to do anything if we skip everything.... - if (skipLocal && skipRemote) { - return; - } + // We don't need to do anything if we skip everything.... + if (skipLocal && skipRemote) { + return; + } - // Traverse local plugins and install dependencies if enabled. - if (!skipLocal) { - await reconcileLocalPlugins({ skipRemote, dryRun }); - } + // Traverse local plugins and install dependencies if enabled. + if (!skipLocal) { + await reconcileLocalPlugins({ skipRemote, dryRun }); + } - // Locate any external plugins and install them. - if (!skipRemote) { - let results = []; - try { - results = await reconcileRemotePlugins({ + // Locate any external plugins and install them. + if (!skipRemote) { + const results = await reconcileRemotePlugins({ skipLocal, skipRemote, dryRun, upgradeRemote, }); - } catch (e) { - throw e; + + let status; + if (dryRun) { + status = '[dry-run] success'.green; + } else { + status = 'success'.green; + } + + let message; + if (results.upgradable.length === 0 && results.fetchable.length === 0) { + message = 'Already up-to-date.'; + } else if (results.upgradable.length === 0) { + message = `Fetched ${results.fetchable.length} new plugins.`; + } else if (results.fetchable.length === 0) { + message = `Upgraded ${results.upgradable.length} new plugins.`; + } else { + message = `Fetched ${results.fetchable.length} new plugins, upgraded ${ + results.upgradable.length + } plugins.`; + } + + console.log(`\n${status} ${message}`); } - let status; - if (dryRun) { - status = '[dry-run] success'.green; - } else { - status = 'success'.green; - } + let endTime = new Date(); - let message; - if (results.upgradable.length === 0 && results.fetchable.length === 0) { - message = 'Already up-to-date.'; - } else if (results.upgradable.length === 0) { - message = `Fetched ${results.fetchable.length} new plugins.`; - } else if (results.fetchable.length === 0) { - message = `Upgraded ${results.upgradable.length} new plugins.`; - } else { - message = `Fetched ${results.fetchable.length} new plugins, upgraded ${ - results.upgradable.length - } plugins.`; - } - - console.log(`\n${status} ${message}`); + let totalTime = ((endTime.getTime() - startTime.getTime()) / 1000).toFixed( + 2 + ); + console.log(`✨ Done in ${totalTime}s.`); + } catch (err) { + console.error(err); + process.exit(1); } - - let endTime = new Date(); - - let totalTime = ((endTime.getTime() - startTime.getTime()) / 1000).toFixed(2); - console.log(`✨ Done in ${totalTime}s.`); } async function createSeedPlugin() { From de9383e657c42f83f742e81bd897adc8023e8e17 Mon Sep 17 00:00:00 2001 From: Wyatt Johnson Date: Thu, 25 Jan 2018 10:17:26 -0700 Subject: [PATCH 2/2] more extreme error exiting for rejected promise that are not handled --- bin/cli | 17 ----------------- bin/util.js | 3 ++- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/bin/cli b/bin/cli index 6237d4740..b61c529c5 100755 --- a/bin/cli +++ b/bin/cli @@ -41,20 +41,3 @@ if (!commands.includes(command)) { } process.exit(1); } - -// /** -// * When this process exists, check to see if we have a running command, if we do -// * check to see if it is still running. If it is, then kill it with a SIGINT -// * signal. This is for the use case where we want to kill the process that is -// * labeled with the PID written out by the parent process. -// */ -// process.once('exit', () => { -// if ( - -// // program.runningCommand && -// program.runningCommand.killed === false && -// program.runningCommand.exitCode === null -// ) { -// program.runningCommand.kill('SIGINT'); -// } -// }); diff --git a/bin/util.js b/bin/util.js index 0a9adb966..e80f123a5 100644 --- a/bin/util.js +++ b/bin/util.js @@ -63,5 +63,6 @@ process.once('SIGUSR2', () => util.shutdown(0, 'SIGUSR2')); // ignoring them. In the future, promise rejections that are not handled will // terminate the Node.js process with a non-zero exit code. process.on('unhandledRejection', err => { - throw err; + console.error(err); + process.exit(1); });