node.cmd
Version:
exec commandline with node
101 lines (87 loc) • 2.32 kB
JavaScript
var CmdUtil = require('./cmd-util'),
QueueCmd = require('./queue-cmd');
/**
* 定义
*/
var Cmd = function(name, cwd) {
this.name = name || this.name;
this.cwd = cwd || this.cwd;
this.queueCmd = new QueueCmd();
};
Cmd.prototype = {
name: '', //名称
cwd: '', //当前命令的运行路径
args: [], //参数
/**
* 设置当前命令的运行路径
* @param {String} cwd 路径
*/
setCwd: function(cwd) {
this.cwd = cwd;
},
/**
* 获取组装的Cmd命令对象
* @param {Array} args 参数
* @param {Object} option 命令运行的环境配置等信息,参考NodeJS的ChildrenProcess exec的option
* @param {Function} callback 回调方法
* @return {[type]} [description]
*/
_getCmdItem: function(args, option, callback) {
if (typeof(option) == 'function') {
callback = option;
option = {};
}
args=args||[];
option=option||{};
option.cwd = option.cwd || this.cwd;
args = [].concat(this.args, args);
var cmdItem = {
cmdName: this.name,
args: args,
option: option,
callback: callback,
scope: this
};
return cmdItem;
},
/**
* 串联执行命令
* @param args 命令执行的参数
* @param callback 回调方法
error 错误
stdout 标准输出
stderr 标准异常
*/
queueExec: function(args, option, callback) {
var cmdItem = this._getCmdItem(args, option, callback);
var cmdStr = CmdUtil.getCmdString(cmdItem);
return this.queueCmd.queue(cmdStr, cmdItem.option, cmdItem.callback);
},
/**
*@desc 并联执行
*/
exec: function(args, option, callback) {
var cmdItem = this._getCmdItem(args, option, callback);
CmdUtil.execCmd(cmdItem);
return cmdItem;
}
};
Cmd.exec = CmdUtil.exec;
/**
* 队列执行命令
* @param {String} cmd 命令
* @param {Object} option 命令运行的环境配置等信息,参考NodeJS的ChildrenProcess exec的option
* @param {Function} callback 回调方法
* @return {[type]} [description]
*/
Cmd.queue = function(cmd, option, callback) {
var ins = new QueueCmd();
ins.queue(cmd, option, callback);
return ins;
};
/**
* 队列执行
* @type {[type]}
*/
Cmd.QueueCmd = QueueCmd;
module.exports = Cmd;