diff --git a/package.json b/package.json index a22590c..a268191 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "coverage": "istanbul cover test/*.test.js && open ./coverage/lcov-report/index.html" }, "devDependencies": { + "async": "^2.6.0", "istanbul": "^0.4.5", "json-stringify-safe": "^5.0.1", "pre-commit": "^1.1.3", diff --git a/shell.js b/shell.js index 795a337..d1472b7 100644 --- a/shell.js +++ b/shell.js @@ -33,14 +33,31 @@ module.exports = function (hardExit) { var commands + function shellOnExitCommand (command, system, cb) { + cb = cb || function () {} + return cmds.shell(command, system, cb) + } + function stopSystem (args, system, cb) { + var onExitCommand = system.global.onExit || false runner.stopAll(system, function () { if (dns) { dns.stop() } if (morp) { morp.stop() } if (hardExit) { - process.exit(0) + if (onExitCommand) { + return shellOnExitCommand(onExitCommand, system, function () { + process.exit(0) + }) + } + return process.exit(0) } else { - cb && cb() + if (onExitCommand && cb) { + return shellOnExitCommand(onExitCommand, system, cb) + } else if (onExitCommand && !cb) { + return shellOnExitCommand(onExitCommand, system) + } else if (cb) { + cb() + } } }) }