yarn-run-all
Version:
A CLI tool to run multiple npm-scripts in parallel or sequential.
73 lines (63 loc) • 2.38 kB
JavaScript
/**
* @author Toru Nagashima
* @copyright 2016 Toru Nagashima. All rights reserved.
* See LICENSE file in root directory for full license.
*/
;
//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------
/**
* Define the function for main process.
*
* @param {string} name - A program name.
* @returns {function} The function for main process.
*/
function defineMain(name) {
/**
* The main process of `npm-run-all` command.
*
* @param {string[]} args - Arguments to parse.
* @param {stream.Writable} stdout - A writable stream to print logs.
* @param {stream.Writable} stderr - A writable stream to print errors.
* @returns {Promise} A promise which comes to be fulfilled when all
* npm-scripts are completed.
* @private
*/
return function main(args) {
var stdout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var stderr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
switch (args[0]) {
case undefined:
case "-h":
case "--help":
return require("../" + name + "/help")(stdout);
case "-v":
case "--version":
return require("./version")(stdout);
default:
return require("../" + name + "/main")(args, stdout, stderr);
}
};
}
//------------------------------------------------------------------------------
// Public Interface
//------------------------------------------------------------------------------
module.exports = function bootstrap(entryModule, name) {
var main = entryModule.exports = defineMain(name);
/* eslint-disable no-console, no-process-exit */
/* istanbul ignore if */
if (require.main === entryModule) {
// Execute.
var promise = main(process.argv.slice(2), process.stdout, process.stderr);
// Error Handling.
promise.then(function () {
// I'm not sure why, but maybe the process never exits
// on Git Bash (MINGW64)
process.exit(0);
}, function (err) {
console.error("ERROR:", err.message);
process.exit(1);
});
}
};