UNPKG

2.13 kBJavaScriptView Raw
1const inquirer = require('inquirer');
2const chalk = require('chalk');
3
4const 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
11const 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
25const 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
34const 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
47const componentTypeQ = {
48 name: 'componentType',
49 type: 'list',
50 choices: ['Class', 'Function'],
51 default: 0,
52 message: 'Choose component type',
53};
54
55const 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
86module.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};