UNPKG

nt-arcane

Version:

App creator for arcane framework.

62 lines (55 loc) 1.55 kB
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'); }