nt-arcane
Version:
App creator for arcane framework.
62 lines (55 loc) • 1.55 kB
JavaScript
var commandLineArgs = require('command-line-args');
var inquirer = require('inquirer');
var path = require('path');
var unzip = require('unzip2');
var fs = require('fs');
var npm = require('npm');
var cli = commandLineArgs([
{name: 'create', alias: 'c', type: String},
{name: 'src', type: String, defaultOption: true}
]);
var options = cli.parse();
var directory_exists = function(path) {
try {
stats = fs.lstatSync(path);
if (stats.isDirectory()) {
return true;
}
} catch (e) {
return false;
}
};
var create_directory = function(path) {
if(!directory_exists(path)) {
fs.mkdirSync(path);
}
};
try {
var json = require(process.cwd() + '/arcane.json');
if(options.name) {
} else {
inquirer.prompt([
{
type: 'input',
name: 'name',
message: 'Configuration Name'
}
], function(answer) {
var filename = answer.name.toLowerCase();
var config_class = filename.replace(/^./g, function(match) {
return match.toUpperCase();
});
var data = fs.readFileSync(__dirname + '/../files/templates/config.tpl', 'utf-8');
create_directory(process.cwd() + '/config');
data = data.replace(/\{\{name\}\}/g, config_class).replace(/\{\{group\}\}/g, filename);
var config_filename = process.cwd() + '/config/' + filename + '.ts';
if(fs.existsSync(config_filename)) {
console.log('\nConfiguration ' + filename + ' is already exists.\n');
} else {
fs.writeFileSync(config_filename, data);
}
});
}
} catch (err) {
console.log('\nWorking directory is not a valid acane project.\n');
}