1 | var fs = require('fs');
|
2 | var fsExtra = require('fs-extra')
|
3 |
|
4 | var reactClass = require('./react-class');
|
5 | var reserved = require('./reserved-words').reserved;
|
6 |
|
7 | var createFile = function (path) {
|
8 |
|
9 | if (!path) {
|
10 | throw new Error('Invalid input information. Inform the --class argument');
|
11 | }
|
12 |
|
13 | var paths = path.split('/');
|
14 |
|
15 | var filePosition = paths.length - 1;
|
16 |
|
17 | if (paths.length > 1) {
|
18 | createDirectory(paths.slice(0, filePosition))
|
19 | }
|
20 |
|
21 | var fileName = paths[filePosition].trim();
|
22 |
|
23 | if (!fileName) {
|
24 | throw new Error('Missing class name');
|
25 | }
|
26 |
|
27 |
|
28 | if (reserved.indexOf(fileName) != -1) {
|
29 | throw new Error('Reserved name');
|
30 | }
|
31 |
|
32 | var regex = '[^a-zA-Z0-9]+';
|
33 |
|
34 | if (fileName.match(regex)) {
|
35 | throw new Error('You can not use special characters');
|
36 | }
|
37 |
|
38 | var body = reactClass.createReactClassStructure(fileName);
|
39 |
|
40 | fs.writeFile(`./${path}.js`, body, function (err) {
|
41 | if (err) {
|
42 | return console.log(err);
|
43 | }
|
44 |
|
45 | console.log('The class was created!');
|
46 |
|
47 | });
|
48 |
|
49 | return 'Creating class file';
|
50 |
|
51 | }
|
52 |
|
53 | var createDirectory = function (arrayOfPaths) {
|
54 |
|
55 | var path = arrayOfPaths.join('/');
|
56 |
|
57 | fsExtra.ensureDirSync(path);
|
58 |
|
59 | }
|
60 |
|
61 |
|
62 | exports.createFile = createFile; |
\ | No newline at end of file |