UNPKG

node.cmd

Version:
101 lines (87 loc) 2.32 kB
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;