es6-scaffolder
Version:
ES6 Scaffolding tool for generating es6 supported web apps in nodejs.
136 lines (115 loc) • 5.33 kB
JavaScript
var menu = require ('console-menu');
var chalk = require ('chalk');
var spawn = require ('child_process').spawn;
var path = require ('path');
var latestVersion = require ('latest-version');
var controller = require ('../action.controller');
var constants = require ('../constants');
var fs = require ('fs');
var packageJson = require ('../package.json');
if (process.argv.length > 2) {
var args = process.argv[2];
switch (args) {
case 'version':
console.log (chalk.green ('ES6 Scaffolder'));
console.log (chalk.green (`version ${packageJson.version}`));
break;
case 'check-update':
console.log (chalk.blue ('Checking for latest version on npm...'));
latestVersion (packageJson.name). then ((version) => {
if (version == packageJson.version) {
console.log (chalk.green ('You are already updated: '+ version));
console.log (chalk.grey ('use '), chalk.yellow ('scaffold update'), chalk.grey (' to update to the latest version'));
} else {
console.log (chalk.green ('Update available to '+ version));
console.log (chalk.gray ('Your version: '+ packageJson.version));
console.log (chalk.grey ('use '), chalk.red ('scaffold update'), chalk.grey (' to update to the latest version'));
}
});
break;
case 'update':
latestVersion (packageJson.name). then ((version) => {
if (version == packageJson.version) {
console.log (chalk.red ('You are already on the updated version'));
} else {
controller.updateScript (version);
}
});
break;
/**
* addition to install scaffold components and addons
*/
case 'install':
break;
default:
console.log (chalk.red ('invalid options provided'));
}
} else {
menu ([
{ hotkey: '1', title: 'es6-basecamp', selected: true },
{ hotkey: '2', title: 'es6-basecamp with Angular 1' },
{ hotkey: '3', title: 'es6-basecamp with Angular 2 + webpack'},
{ hotkey: '4', title: 'React with webpack' },
{ hotkey: '5', title: 'ES6 NodeJS, Angular2 and Passport Authentication (Standalone) '},
{ separator: true },
{ hotkey: '?', title: 'Help' }
], {
header: constants.appHeader+ ' '+ packageJson.version,
border: true
}). then ( item => {
if ( item ) {
switch (item.hotkey){
case '1':
console.log (chalk.grey ('Installing es6-basecamp scaffold'));
controller.execBasecampScript (() => {
var directory = path.resolve()+path.sep+'es6-basecamp';
controller.postCloningScript (directory);
});
break;
case '2':
// configuring es6 with angularJS
console.log (chalk.grey ('Installing es6-basecamp for Angular'));
controller.execBasecampAngularScript (() => {
var directory = path.resolve()+path.sep+'es6-basecamp-angular';
controller.postCloningScript (directory);
});
break;
case '3':
//installing es6 with angular2 webpack
console.log (chalk.grey ('Installing es6-basecamp-angular2 with webpack'));
controller.execBasecampAngular2Script (() => {
var directory = path.resolve()+ path.sep + 'es6-basecamp-ng2-weback'+ path.sep;
controller.postCloningScript (directory);
});
break;
case '4':
console.log (chalk.grey ('Installing React with webpack scaffold'));
controller.execBasecampReactScript (() => {
var directory = path.resolve()+ path.sep + 'basecamp-react' + path.sep;
controller.postCloningScript (directory);
});
break;
case '5':
// TODO implement here
console.log (chalk.grey ('Installing ES6 Node, Angular 2, Passport Standalone scaffold.'))
controller.execENA2PassScript (() => {
const directory = path.resolve()+ path.sep + 'ENA2Pass-scaffold'+ path.sep;
controller.postCloningScript (directory);
})
break;
case '?':
console.log ('es6-scaffolder Help?');
fs.readFile ('README.md', (err, data) => {
if (err) throw err;
console.log (data.toString());
})
break;
default:
console.log (chalk.blue('Work in progress. :('));
}
} else {
console.log ('Cancelling the menu')
}
});
}