es6-scaffolder
Version:
ES6 Scaffolding tool for generating es6 supported web apps in nodejs.
179 lines (139 loc) • 5.52 kB
JavaScript
var chalk = require ('chalk');
var constants = require ('./constants');
/**
* spawn is an EventEmitter object. Using spawn we can listen to
* stdout/stderr events and hence can display live.
*/
var spawn = require ('child_process').spawn;
//const exports = module.exports = {};
module.exports.execBasecampScript = function (next) {
var command = spawn ('git', ['clone', constants.es6BasecampRepo]);
command.stdout.on ('data', (data) => {
console.log (chalk.blue(data));
});
command.stderr.on ('data', (data) => {
console.error (chalk.green(data));
})
command.on ('exit', (code) => {
if (code == 128)
console.log (chalk.red('scaffolding already exists.. terminating'));
//console.log ('process executed with code '+ code);
next ();
})
}
/**
* for angularJS scaffolding URL
*/
module.exports.execBasecampAngularScript = function (next) {
var command = spawn ('git', ['clone', constants.es6BasecampAngularRepo]);
command.stdout.on ('data', (data) => {
console.log (chalk.green (data));
});
command.stdout.on ('data', (data) => {
console.error (chalk.red (data));
});
command.on ('exit', (code) => {
if (code == 128)
console.log (chalk.red('scaffolding already exists.. terminating'));
next();
});
}
/**
* the script to configure angular2 basecamp with Typescript and bootstrap
*/
module.exports.execBasecampAngular2Script = function (next) {
var command = spawn ('git', ['clone', constants.es6BasecampAngular2Repo]);
command.stdout.on ('data', (data) => console.log (chalk.green (data)));
command.stderr.on ('data', (data) => console.error (chalk.blue (data)));
command.on ('exit', (code) => {
if (code == 128)
console.log (chalk.red ('scaffolding already exists.. terminating'));
next();
});
}
module.exports.execBasecampReactScript = function (next) {
var command = spawn ('git', ['clone', constants.reactRepo]);
command.stdout.on ('data', data => console.log (chalk.green (data)));
command.stderr.on ('data', data => console.error (chalk.blue (data)));
command.on ('exit', code => {
if (code == 128)
console.log (chalk.red ('scaffolding already exists.terminating'))
next();
})
};
/**
* ES6, Node, Angular2, Passport scaffold
* https://github.com/sharma02gaurav/ENA2Pass-scaffold
*/
module.exports.execENA2PassScript = next => {
const command = spawn ('git', ['clone', constants.ENA2Pass]);
command.stdout.on ('data', data => console.log (chalk.green (data)));
command.stderr.on ('data', data => console.error (chalk.blue (data)));
command.on ('exit', code => {
if (code === 128) console.log (chalk.red ('Scaffold already exists. Terminating'))
next();
})
}
/**
* the common script to execute after cloning a repo
*/
module.exports.postCloningScript = function (directory) {
console.log (chalk.green('Done creating scaffold'));
console.log (chalk.green ('configuring your scaffold') );
var npmInstall = spawn ('npm', ['--prefix', directory ,'install', directory]);
npmInstall.stdout.on ('data', (data) => console.log (chalk.green (data)));
npmInstall.stderr.on ('data', (data) => console.log (chalk.blue (data)));
// npmInstall.stderr.pipe (process.stderr);
// npmInstall.stdout.pipe (process.stdout);
npmInstall.on ('exit', function (code) {
if (code == 0) {
console.log (chalk.green ('DONE!'))
/**
* after cloning.. remove the git support from the directory
*/
removeGitSupport (directory);
} else {
console.log (chalk.red ('Some error: '+ code));
}
});
}
/**
* script to remove the git repo support in the cloned repo. Run this after postCloningScript
* @param {string} directory
*/
function removeGitSupport (directory) {
console.log (chalk.green ('removing remote git'));
var script = spawn ('rm', ['-Rf', directory+'.git']);
script.stdout.on ('data', (data) => console.log (chalk.green (data)));
script.stderr.on ('data', (data) => console.log (chalk.red (data)));
script.on ('exit', (code) => {
if (code == 0)
console.log (chalk.green ('Configured'));
else
console.log (chalk.red ('error removing git from repo'));
});
}
/**
* script to update es6-scaffolder
*/
module.exports.updateScript = function (version) {
console.log (chalk.green ('Updating your es6-scaffold to '+ version));
var updateCommand = spawn ('npm', ['uninstall', '-g', 'es6-scaffolder']);
updateCommand.stderr.pipe (process.stderr);
updateCommand.stdout.pipe (process.stdout);
updateCommand.on ('exit', (code) => {
if (code == 0) {
updateCommand = spawn ('npm', ['install', '-g', 'es6-scaffolder']);
updateCommand.stderr.pipe (process.stderr);
updateCommand.stdout.pipe (process.stdout);
updateCommand.on ('exit', (code) => {
if (code == 0)
console.log (chalk.green ('scaffolder has been updated to '+ version));
else
console.log (chalk.red ('Error occured while updating to '+ version));
});
} else {
console.log (chalk.red ('Error occured while updationg to version '+ version));
}
});
}