UNPKG

nt-arcane

Version:

App creator for arcane framework.

73 lines (66 loc) 2.03 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: 'name', alias: 'n', 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) { create_controller(options); } else { inquirer.prompt([ { type: 'input', name: 'name', message: 'Controller Name' } ], create_controller); } } catch (err) { console.log('\nWorking directory is not a valid acane project.\n'); } function create_controller(data) { create_directory(process.cwd() + '/controller'); var controller = data.name.toLowerCase(); var controller_name = controller.replace(/^./g, function(match) { return match.toUpperCase(); }); var controller_path = process.cwd() + '/controller/' + controller_name + 'Controller'; if(directory_exists(controller_path)) { console.log('\nController is already exists.\n'); } else { var data = fs.readFileSync(__dirname + '/../files/templates/controller.tpl', 'utf-8'); create_directory(controller_path); data = data.replace(/\{\{name\}\}/g, controller_name); data = data.replace(/\{\{url\}\}/g, controller); fs.writeFileSync(controller_path + '/' + controller + '.ts', data); if(json.modules.indexOf('orm') !== -1) { create_directory(controller_path + '/models'); } if(json.modules.indexOf('template') !== -1 || json.modules.indexOf('template-eco') !== -1) { var view_data = fs.readFileSync(__dirname + '/../files/templates/view.tpl', 'utf-8'); fs.writeFileSync(controller_path + '/view.html', view_data); } } }