UNPKG

2.44 kBJavaScriptView Raw
1#!/usr/bin/env node
2const chalk = require('chalk');
3const clear = require('clear');
4const figlet = require('figlet');
5
6const inquirer = require('./lib/inquirer');
7const Listr = require('./lib/listr');
8const files = require('./lib/files');
9const utils = require('./utils');
10const init = require('./lib/initialise');
11const config = require('./lib/config');
12
13
14clear();
15
16console.log(config.all);
17
18// eslint-disable-next-line no-console
19console.log(
20 chalk.yellow(
21 figlet.textSync(`Component
22 Creator`, { horizontalLayout: 'full' }),
23 ),
24);
25
26let result = {};
27
28const distQ = async () => {
29 const { dist } = await inquirer.distination();
30
31 if (!files.isExistFolder(dist)) {
32 const create = await inquirer.folderExist(dist, false);
33
34 if (!create[`exist_${dist}`]) {
35 return await distQ(); // eslint-disable-line no-return-await
36 }
37 }
38
39 result.dist = dist;
40 return dist;
41};
42
43const componentNameQ = async (dist) => {
44 const { componentName } = await inquirer.componentName();
45 const path = `${dist}/${componentName}`;
46 if (files.isExistFolder(path)) {
47 const create = await inquirer.folderExist(componentName, true);
48
49 if (create[`exist_${componentName}`]) {
50 result.overWritingFiles = await files.getFilesInFolder(path);
51 } else {
52 return await componentNameQ(dist); // eslint-disable-line no-return-await
53 }
54 }
55
56 result.componentName = componentName;
57 return componentName;
58};
59
60const componentTypeQ = async () => {
61 const quest = await inquirer.componentType();
62 result.componentType = quest.componentType;
63
64 return quest.componentType;
65};
66
67const componentMockQ = async () => {
68 const quest = await inquirer.mock();
69 result = { ...result, ...quest };
70
71 return { ...quest };
72};
73
74const run = async () => {
75 const initialValues = await init();
76
77 let dist;
78 let name;
79 let type;
80 let extraQ;
81
82 if (!initialValues.useDefault) {
83 dist = await distQ();
84 name = await componentNameQ(dist);
85 type = await componentTypeQ();
86 extraQ = {
87 ...await componentMockQ(),
88 };
89 } else {
90 dist = config.get('default.dist');
91 name = initialValues.useDefault;
92 type = config.get('default.type');
93
94 extraQ = {
95 ...config.get('default'),
96 };
97 }
98
99 extraQ.overWritingFiles = result.overWritingFiles;
100
101 const path = `${dist}/${name}`;
102 const componentParams = { dist, name: utils.getComponentName(name), type };
103
104 Listr.run(path, componentParams, extraQ);
105};
106
107run();