node.cmd
Version:
exec commandline with node
82 lines (74 loc) • 1.88 kB
JavaScript
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;