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 App = (function () {
|
9 | function App() {
|
10 | this.options = {
|
11 | name: null,
|
12 | camelName: null,
|
13 | snakeName: null,
|
14 | capitalName: null,
|
15 | description: null,
|
16 | version: null,
|
17 | platforms: null,
|
18 | features: null
|
19 | };
|
20 | }
|
21 | App.prototype.getName = function () {
|
22 | var me = this;
|
23 | var curDir = _.last(process.cwd().split(path.sep));
|
24 | return Inquirer.prompt([{
|
25 | type: 'input',
|
26 | name: 'name',
|
27 | message: 'Application Name',
|
28 | "default": me.options.name || curDir.toLowerCase(),
|
29 | validate: function (name) {
|
30 | if (_.isNull(Joi.validate(name, Joi.string().lowercase().required(), { convert: false }).error)) {
|
31 | return true;
|
32 | }
|
33 | else {
|
34 | return 'Application Name must be lowercase';
|
35 | }
|
36 | }
|
37 | }]).then(function (answers) {
|
38 | me.options.name = answers.name;
|
39 | me.options.camelName = _.camelCase(answers.name);
|
40 | me.options.snakeName = _.snakeCase(answers.name);
|
41 | me.options.capitalName = me.options.camelName.charAt(0).toUpperCase() + me.options.camelName.substr(1);
|
42 | });
|
43 | };
|
44 | App.prototype.getDescription = function () {
|
45 | var me = this;
|
46 | var curDir = _.last(process.cwd().split(path.sep));
|
47 | return Inquirer.prompt([{
|
48 | type: 'input',
|
49 | name: 'description',
|
50 | message: 'Application Description',
|
51 | "default": me.options.name || curDir.toLowerCase()
|
52 | }]).then(function (answers) {
|
53 | me.options.description = answers.description;
|
54 | });
|
55 | };
|
56 | App.prototype.getVersion = function () {
|
57 | var me = this;
|
58 | return Inquirer.prompt([{
|
59 | type: 'rawlist',
|
60 | name: 'version',
|
61 | message: 'ExtLoop Version',
|
62 | "default": '1',
|
63 | choices: ExtLB["default"]["default"].versions
|
64 | }]).then(function (answers) {
|
65 | me.options.version = answers.version;
|
66 | });
|
67 | };
|
68 | App.prototype.getPlatforms = function () {
|
69 | var me = this;
|
70 | return Inquirer.prompt([{
|
71 | type: 'checkbox',
|
72 | name: 'platforms',
|
73 | message: 'Platform(s)',
|
74 | choices: ExtLB["default"]["default"].platforms
|
75 | }]).then(function (answers) {
|
76 | me.options.platforms = answers.platforms;
|
77 | });
|
78 | };
|
79 | App.prototype.getFeatures = function () {
|
80 | var me = this;
|
81 | return Inquirer.prompt([{
|
82 | type: 'checkbox',
|
83 | name: 'features',
|
84 | message: 'Enable Features',
|
85 | pageSize: 20,
|
86 | choices: ExtLB["default"]["default"].features
|
87 | }]).then(function (answers) {
|
88 | me.options.features = answers.features;
|
89 | });
|
90 | };
|
91 | return App;
|
92 | }());
|
93 | exports.command = 'app';
|
94 | exports.describe = 'Create a new ExtLoop Application';
|
95 | exports.builder = {};
|
96 | exports.handler = function (argv) {
|
97 | var app = new App();
|
98 | app.getName().then(function () {
|
99 | return app.getDescription();
|
100 | }).then(function () {
|
101 | return app.getVersion();
|
102 | }).then(function () {
|
103 | return app.getPlatforms();
|
104 | }).then(function () {
|
105 | return app.getFeatures();
|
106 | }).then(function () {
|
107 | ExtLB["default"]["default"].createApp(app.options);
|
108 | })["catch"](function (err) {
|
109 | console.error(err);
|
110 | });
|
111 | };
|
112 |
|
\ | No newline at end of file |