From 8d2c523a4a307b5fa25eef34082cb7eafa2789a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tarc=C3=ADsio=20Abadio=20de=20Magalh=C3=A3es=20J=C3=BAnior?= Date: Sat, 8 Mar 2014 12:00:26 -0300 Subject: [PATCH] Add opts tag at cmdrunner file. --- cmdrunner.json | 8 ++++++++ main.js | 43 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/cmdrunner.json b/cmdrunner.json index 1f07389..f8e22a4 100644 --- a/cmdrunner.json +++ b/cmdrunner.json @@ -18,4 +18,12 @@ "cmd": "git archive --format zip -o brackets-command-runner.zip master", "args" : [], "key" : "Ctrl-Alt-Shift-Z" +}, { + "label": "Show Current Dir", + "cmd": "pwd", + "args" : [], + "key" : "", + "opts": { + "defaultPath": "../" + } }] diff --git a/main.js b/main.js index 5dd4d9a..8048add 100644 --- a/main.js +++ b/main.js @@ -178,6 +178,12 @@ define(function (require, exports, module) { elem.animate({ scrollTop: elem[0].scrollHeight }, "slow"); } + /** + * Retorna um array com os parametros do tipo $digito fornecido no comando. + * @param {string} command String do comando que podera ser executado. + * + * @return Array com os paramentros fornecidos na stringo do comando. + */ function getParams(command) { var re = /\$[0-9]+/g, matches = [], @@ -194,6 +200,15 @@ define(function (require, exports, module) { return matches; } + /** + * Constroi o comando mesclando os parametros com o template da string do comando. + * @param {string} command String do comando que podera ser executado. + * @param {array} params Array que contem os parametros especificados na string do comando. + * @param {array} args Array de argumentos informados pelo usuario. + * @param {array} argsDefault Array de argumentos padrao informados no arquivo cmdrunner.json. + * + * @return String do comando meclado com os parametros pronto para ser executado. + */ function buildCommand(command, params, args, argsDefault) { for (var i = 0; i < params.length; i++) { var idx = parseInt(params[i]); @@ -210,6 +225,28 @@ define(function (require, exports, module) { return command; } + /** + * Obtem as opcoes extras fornecidas para o comando meclando-as com as opcoes de execucao padrao. + * @return {object} Objeto que contem as informacoes extras para execucao do comando. + */ + function getOpts(objCmd) { + var defaultOpts = { + defaultPath: ProjectManager.getProjectRoot().fullPath + }; + + var opts = $.extend({}, defaultOpts, objCmd.opts); + + //TODO Melhorar! + if (opts.defaultPath + && typeof opts.defaultPath == "string" + && opts.defaultPath.length > 0 + && opts.defaultPath.charAt(0) === '.') { + opts.defaultPath = defaultOpts.defaultPath + '/' + opts.defaultPath; + } + + return opts; + } + /** * Executa o comando fornecido e imprime a saida no painel. * @@ -218,15 +255,13 @@ define(function (require, exports, module) { * @param {DOMElem} btnClose Botao que fecha o painel de input de argumentos. */ function runCommand(objCmd, args, btnClose) { - var opts = { - defaultPath: ProjectManager.getProjectRoot().fullPath - }; + var command = buildCommand(objCmd.cmd, getParams(objCmd.cmd), args, objCmd.args); appendOutput('Executing: ' + command); - execCmdFnc(command, null, opts, function(err, data) { + execCmdFnc(command, null, getOpts(objCmd), function(err, data) { appendOutput(data, err ? 'red' : 'white'); if (btnClose) {