UNPKG

2.29 kBJavaScriptView Raw
1const inquirer = require('inquirer');
2const chalk = require('chalk');
3
4const config = require('./config');
5
6const componentTypeChoise = ['class', 'function'];
7
8const 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
15const 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
29const 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
38const 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
51const 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
59const 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
90module.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};