UNPKG

node.cmd

Version:
82 lines (74 loc) 1.88 kB
var childProcess = require('child_process'), nodeUtil = require('util'), nodeExec = childProcess.exec; /** * 执行下一条命令 cmdItem:{ cmdName:'', args:[], option:{}, callback:function(ret){ ret:{ stdout:'' stderr:'', code:'' } }, scope:[Object], stdout:'' stderr:'', code:'' } */ var Util = { /** * 执行命令 * @param {String} cmdItem.cmdName 命令的明曾 * @param {Array} cmdItem.args 命令的参数,数组形式,字符串化后,会变成空格分隔 * @param {Object} cmdItem.option 命令的参数,参见NodeJS,child_process的exec方法之option参数 * @return {Object} * cmd:字符串命令 * childProcess:childProcess对象 */ execCmd: function(cmdItem) { var cmdStr = Util.getCmdString(cmdItem); child = Util.exec(cmdStr, cmdItem.option, cmdItem.callback); return { cmd: cmdStr, childProcess: child }; }, getCmdString: function(cmdItem) { var name = cmdItem.cmdName, args = cmdItem.args, cmdStr = ''; args.unshift(name); cmdStr = args.join(' '); return cmdStr; }, /** * 执行命令 * @param {String} cmd 命令 * @param {Object} option 命令的参数,参见NodeJS,child_process的exec方法之option参数 * @param {Function} callback 回调方法 * @return {Object} childProcess对象 */ exec: function(cmd, option, callback) { if (typeof(option) == 'function') { callback = option; option = null; } if (nodeUtil.isArray(cmd)) { cmd = cmd.join(' '); } return nodeExec(cmd, option, (function(cmd, callabck, error, stdout, stderr) { callback && callback({ cmd: cmd, error: error, stdout: stdout, stderr: stderr }); }).bind(null, cmd, callback)); } }; module.exports = Util;