autocode
Version:
spec-driven code generator
60 lines (56 loc) • 1.74 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var path;
path = require('path');
module.exports = function(opts) {
var autocode, cwd, i, runCmd, scripts, spawn;
autocode = this;
spawn = require('cross-spawn');
this.build(opts);
if (!this.config.scripts || !this.config.scripts.run) {
return "\n" + ' DONE! '.bgGreen.white;
}
cwd = this.path;
console.log("\nRUN:".bold);
scripts = this.config.scripts;
i = 0;
runCmd = function() {
var command, description, dir, proc;
if (!scripts.run[i]) {
console.log("\n" + ' DONE! '.bgGreen.white);
return;
}
if (scripts.run[i].title && !scripts.run[i].command) {
console.log(' RUN TITLE '.bgGreen.white + (' ' + scripts.run[i].title + ' ').bgWhite + " \n");
i++;
runCmd();
return;
}
description = scripts.run[i].description || scripts.run[i];
command = scripts.run[i].command || scripts.run[i];
if (scripts.run[i].path) {
if (scripts.run[i].path.match(/^\//)) {
dir = scripts.run[i].path;
} else {
dir = cwd + "/" + scripts.run[i].path;
}
dir = path.normalize(dir);
} else {
dir = cwd;
}
console.log(' RUN SCRIPT '.bgGreen.white + (' ' + description + ' ').bgWhite + " \n" + command.gray);
proc = spawn('bash', ['-c', command], {
cwd: dir
});
proc.on('close', function(err) {
return runCmd();
});
proc.on('error', function(err) {
return console.log("\n" + ' ERROR '.bgRed.white + (' ' + err.message + ' ').bgWhite);
});
return i++;
};
runCmd();
return 'Running...';
};
}).call(this);