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