1 | "use strict";
|
2 | exports.__esModule = true;
|
3 | var ExtLB = require("..");
|
4 | var Inquirer = require("inquirer");
|
5 | var path = require("path");
|
6 | var _ = require("lodash");
|
7 | var Joi = require("joi");
|
8 | var Module = (function () {
|
9 | function Module() {
|
10 | this.options = {
|
11 | name: null,
|
12 | camelName: null,
|
13 | snakeName: null,
|
14 | capitalName: null,
|
15 | server: null,
|
16 | client: null
|
17 | };
|
18 | }
|
19 | Module.prototype.getName = function () {
|
20 | var me = this;
|
21 | var curDir = _.last(process.cwd().split(path.sep));
|
22 | return Inquirer.prompt([{
|
23 | type: 'input',
|
24 | name: 'name',
|
25 | message: 'Module Name',
|
26 | "default": me.options.name || curDir.toLowerCase(),
|
27 | validate: function (name) {
|
28 | if (_.isNull(Joi.validate(name, Joi.string().lowercase().required(), { convert: false }).error)) {
|
29 | return true;
|
30 | }
|
31 | else {
|
32 | return 'Module Name must be lowercase';
|
33 | }
|
34 | }
|
35 | }]).then(function (answers) {
|
36 | me.options.name = answers.name;
|
37 | me.options.camelName = _.camelCase(answers.name);
|
38 | me.options.snakeName = _.snakeCase(answers.name);
|
39 | me.options.capitalName = me.options.camelName.charAt(0).toUpperCase() + me.options.camelName.substr(1);
|
40 | });
|
41 | };
|
42 | Module.prototype.getServer = function () {
|
43 | var me = this;
|
44 | return Inquirer.prompt([{
|
45 | type: 'confirm',
|
46 | name: 'server',
|
47 | message: 'Enable server side support?',
|
48 | "default": true
|
49 | }]).then(function (answers) {
|
50 | me.options.server = answers.server;
|
51 | });
|
52 | };
|
53 | Module.prototype.getClient = function () {
|
54 | var me = this;
|
55 | return Inquirer.prompt([{
|
56 | type: 'confirm',
|
57 | name: 'client',
|
58 | message: 'Enable client side support?',
|
59 | "default": true,
|
60 | choices: ExtLB["default"]["default"].versions
|
61 | }]).then(function (answers) {
|
62 | me.options.client = answers.client;
|
63 | });
|
64 | };
|
65 | return Module;
|
66 | }());
|
67 | exports.command = 'module';
|
68 | exports.describe = 'Create a new ExtLoop Module';
|
69 | exports.builder = {};
|
70 | exports.handler = function (argv) {
|
71 | var app = new Module();
|
72 | app.getName().then(function () {
|
73 | return app.getServer();
|
74 | }).then(function () {
|
75 | return app.getClient();
|
76 | }).then(function () {
|
77 | ExtLB["default"]["default"].createModule(app.options);
|
78 | })["catch"](function (err) {
|
79 | console.error(err);
|
80 | });
|
81 | };
|
82 |
|
\ | No newline at end of file |