UNPKG

3.86 kBJavaScriptView Raw
1"use strict";
2exports.__esModule = true;
3var ExtLB = require("..");
4var Inquirer = require("inquirer");
5var path = require("path");
6var _ = require("lodash");
7var Joi = require("joi");
8var 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}());
93exports.command = 'app';
94exports.describe = 'Create a new ExtLoop Application';
95exports.builder = {};
96exports.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//# sourceMappingURL=app.js.map
\No newline at end of file