rapido
Version:
Rápido is an extensible command line interface that enables rapid development for any technology stack. Rápido is written in JavaScript and is built on top of Node.js and npm.
87 lines (74 loc) • 2.69 kB
JavaScript
var File = require('raptor-files/File');
var path = require('path');
module.exports = {
usage: 'Usage: $0 create command',
options: {
'dir': {
describe: 'Output directory (defaults to current working directory)'
},
'overwrite': {
describe: 'Overwrite existing template if one exists',
boolean: true
}
},
validate: function(args, rapido) {
return args;
},
run: function(args, config, rapido) {
var curDir = new File(process.cwd());
var name = curDir.getName(),
description,
overwrite = args.overwrite === true;
var prompt = rapido.prompt;
prompt.start();
prompt.get(
{
properties: {
'name': {
description: 'Stack name [' + name + ']',
required: false
},
'description': {
description: 'Description',
required: false
},
}
},
function (err, result) {
if (err) {
rapido.log.error(err);
return;
}
name = result.name || name;
description = result.description;
var dir = args.dir;
if (dir) {
dir = path.resolve(process.cwd(), dir);
}
else {
dir = process.cwd();
}
var outputDir = new File(dir);
rapido.scaffold(
{
scaffoldDirProperty: "scaffold.stack.dir",
outputDir: outputDir,
data: {
commandName: name,
commandDescription: description
},
overwrite: overwrite,
afterFile: function(outputFile) {
}
});
rapido.log.success('finished', 'Stack written to "' + outputDir + '"');
rapido.log();
rapido.log('Your stack is ready to be published to npm using the following command:');
rapido.log.info('npm publish');
rapido.log();
rapido.log('Try your stack out:');
rapido.log.info('$0 use ' + name);
rapido.log.info('$0 say hello world --upper-case');
});
}
};