UNPKG

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