1 |
|
2 | const chalk = require('chalk');
|
3 | const path = require('path');
|
4 |
|
5 | const ensureCanConvertToStateless = require('./utils/ensure-can-convert-to-stateless');
|
6 | const getConfigs = require('./utils/get-configs');
|
7 | const readFile = require('./utils/read-file');
|
8 | const toStatelessTransform = require('./transforms/to-stateless');
|
9 | const validateFilePath = require('./utils/validate-file-path');
|
10 | const writeFile = require('./utils/write-file');
|
11 |
|
12 | module.exports = function({ eslintConfig, filePath }) {
|
13 | const _eslintConfig = eslintConfig;
|
14 |
|
15 | return new Promise((resolve, reject) => {
|
16 | const { eslintConfig } = getConfigs(_eslintConfig);
|
17 |
|
18 | try {
|
19 | validateFilePath(filePath);
|
20 |
|
21 | const componentName = path.basename(filePath, '.jsx');
|
22 | const fileContent = readFile(filePath);
|
23 |
|
24 | ensureCanConvertToStateless(fileContent, eslintConfig);
|
25 |
|
26 | const newFileContent = toStatelessTransform(
|
27 | fileContent,
|
28 | componentName,
|
29 | _eslintConfig
|
30 | );
|
31 |
|
32 | writeFile(filePath, newFileContent);
|
33 |
|
34 | resolve({
|
35 | messages: [
|
36 | { emoji: `🤖`, text: `${chalk.green(`Beep boop, I'm done!`)}` }
|
37 | ]
|
38 | });
|
39 | } catch (error) {
|
40 | reject(error.message + `\n\n${error.stack || ''}`);
|
41 | }
|
42 | });
|
43 | };
|