wpvizir
Version:
Make WordPress projects workflow easier.
67 lines (54 loc) • 1.53 kB
JavaScript
;
var exec = require('child_process').exec;
var pathfinder = require('./pathfinder');
var minimist = require('./minimist');
var helper = require('../../lib/cli/helper');
var expect = require('expect');
function wpvizir(command) {
return 'node ' + pathfinder().wpvizir() + ' ' + command;
}
function eraseTime(text) {
return ('\n' + text).replace(/(\r\n|\r|\n)\[[0-9:]{8}\] /g, '\n').slice(1).trim();
}
function run(command, callback) {
return exec(command, function(err, stdout, stderr) {
stdout = eraseTime(stdout);
callback(err, stdout, stderr)
});
}
function checkHelper(command, helperId, done) {
var expected = helper(helperId, true);
run(command, function(err, stdout, stderr) {
expect(err).toEqual(null);
expect(stderr).toEqual('');
expect(stdout).toEqual(expected);
done(err);
});
}
var runner = {
command: function(command) {
command = wpvizir(command);
return {
command: command,
checkHelper: function(helperId, done) {
return checkHelper(this.command, helperId, done);
},
run: function(callback) {
return run(this.command, callback);
}
}
},
commandDo: function(commandObj, commandStr) {
this.ignoreLog(function() {
return commandObj.do(minimist(commandStr));
});
},
ignoreLog: function(whatToDo) {
var oldLog = console.log;
console.log = function() {};
var returnValue = whatToDo();
console.log = oldLog;
return returnValue;
}
};
module.exports = runner;