1 | const inquirer = require('inquirer');
|
2 | const chalk = require('chalk');
|
3 |
|
4 | const config = require('./config');
|
5 |
|
6 | const componentTypeChoise = ['class', 'function'];
|
7 |
|
8 | const useDefaultQ = name => ({
|
9 | name: 'useDefault',
|
10 | type: 'confirm',
|
11 | default: 0,
|
12 | message: `You are going to create a component called ${chalk.blue(name)} with default settings, are you sure?`,
|
13 | });
|
14 |
|
15 | const distQ = {
|
16 | name: 'dist',
|
17 | type: 'input',
|
18 | default: config.get('default.dist'),
|
19 | message: 'Enter destination path',
|
20 | validate: (value) => {
|
21 | if (!value) {
|
22 | return 'Enter destination path';
|
23 | }
|
24 |
|
25 | return true;
|
26 | },
|
27 | };
|
28 |
|
29 | const existFolderQ = (folder, exist) => ({
|
30 | name: `exist_${folder}`,
|
31 | type: 'confirm',
|
32 | default: 0,
|
33 | message: `${chalk.blue(folder)} ${exist
|
34 | ? `allready exist, rewrite it? ${chalk.grey('(all files and folders will be remove)')}`
|
35 | : "does't exist, create it?"}`,
|
36 | });
|
37 |
|
38 | const componentNameQ = {
|
39 | name: 'componentName',
|
40 | type: 'input',
|
41 | message: 'Enter name of component folder',
|
42 | validate: (value) => {
|
43 | if (!value) {
|
44 | return 'Enter name of component folder';
|
45 | }
|
46 |
|
47 | return true;
|
48 | },
|
49 | };
|
50 |
|
51 | const componentTypeQ = {
|
52 | name: 'componentType',
|
53 | type: 'list',
|
54 | choices: componentTypeChoise,
|
55 | default: componentTypeChoise.indexOf(config.get('default.componentType')),
|
56 | message: 'Choose component type',
|
57 | };
|
58 |
|
59 | const mockQ = [
|
60 | {
|
61 | name: 'mock',
|
62 | type: 'confirm',
|
63 | default: 0,
|
64 | message: 'Need folder for moock?',
|
65 | },
|
66 | {
|
67 | name: 'mockFolder',
|
68 | type: 'input',
|
69 | default: '__mock__',
|
70 | message: 'Enter mock folder name',
|
71 | validate: (value) => {
|
72 | if (!value) {
|
73 | return 'Enter name of component folder';
|
74 | }
|
75 |
|
76 | return true;
|
77 | },
|
78 | when: ({ mock }) => mock,
|
79 | },
|
80 | {
|
81 | name: 'mockFileType',
|
82 | type: 'list',
|
83 | choices: ['json', 'js'],
|
84 | default: 0,
|
85 | message: 'Choose mock file extension',
|
86 | when: ({ mock }) => mock,
|
87 | },
|
88 | ];
|
89 |
|
90 | module.exports = {
|
91 | useDefault: name => inquirer.prompt(useDefaultQ(name)),
|
92 | distination: () => inquirer.prompt(distQ),
|
93 | folderExist: (folder, exist) => {
|
94 | const q = existFolderQ(folder, exist);
|
95 | return inquirer.prompt(q);
|
96 | },
|
97 | componentName: () => inquirer.prompt(componentNameQ),
|
98 | componentType: () => inquirer.prompt(componentTypeQ),
|
99 | mock: () => inquirer.prompt(mockQ),
|
100 | };
|