UNPKG

2.56 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 utils = require('./utils');
11const init = require('./lib/initialise');
12const config = require('./lib/config');
13
14
15clear();
16
17// eslint-disable-next-line no-console
18console.log(
19 chalk.yellow(
20 figlet.textSync(`Component
21 Creator`, { horizontalLayout: 'full' }),
22 ),
23);
24
25let result = {};
26
27const distQ = async () => {
28 const { dist } = await inquirer.distination();
29
30 if (!files.isExistFolder(dist)) {
31 const create = await inquirer.folderExist(dist, false);
32
33 if (!create[`exist_${dist}`]) {
34 return await distQ(); // eslint-disable-line no-return-await
35 }
36 }
37
38 result.dist = dist;
39 return dist;
40};
41
42const componentNameQ = async (dist) => {
43 const { componentName } = await inquirer.componentName();
44 const path = `${dist}/${componentName}`;
45 if (files.isExistFolder(path)) {
46 const create = await inquirer.folderExist(componentName, true);
47
48 if (create[`exist_${componentName}`]) {
49 result.overWritingFiles = await files.getFilesInFolder(path);
50 } else {
51 return await componentNameQ(dist); // eslint-disable-line no-return-await
52 }
53 }
54
55 result.componentName = componentName;
56 return componentName;
57};
58
59const componentTypeQ = async () => {
60 const quest = await inquirer.componentType();
61 result.componentType = quest.componentType;
62
63 return quest.componentType;
64};
65
66const componentMockQ = async () => {
67 const quest = await inquirer.mock();
68 result = { ...result, ...quest };
69
70 return { ...quest };
71};
72
73const run = async () => {
74 console.log(process.env.MODE);
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 if (files.isExistFolder(`${dist}/${name}`)) {
99 extraQ.overWritingFiles = await files.getFilesInFolder(`${dist}/${name}`);
100 }
101 }
102
103 const path = `${dist}/${name}`;
104 const componentParams = { dist, name: utils.getComponentName(name), type };
105
106 Listr.run(path, componentParams, extraQ);
107};
108
109run();