-
Notifications
You must be signed in to change notification settings - Fork 0
/
eventsHandlersModuleGenerator.js
39 lines (28 loc) · 1.33 KB
/
eventsHandlersModuleGenerator.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const { readdirSync, writeFileSync } = require('fs');
const { parse } = require('path');
const codeDirectory = './src/';
const eventHandlersDirectory = 'eventsHandlers/';
const eventHandlersFile = 'eventsHandlers.js';
const constructImportSection = (imports) => `${imports.join('\n')}\n`;
const constructExportSection = (functionNames) => `module.exports = {\n ${functionNames.join(',\n ')},\n}`;
const getFileName = (fileDirectory) => parse(fileDirectory).name;
const constructImport = (fileDirectory, baseDirectory) => `const ${getFileName(fileDirectory)} = require('${baseDirectory}${getFileName(fileDirectory)}');`;
try {
const handlersFiles = readdirSync(codeDirectory + eventHandlersDirectory);
let eventHandlersFileContent = '';
const functionNames = handlersFiles.map((fileDirectory) => getFileName(
fileDirectory,
));
const imports = handlersFiles.map((fileDirectory) => constructImport(
fileDirectory,
`./${eventHandlersDirectory}`,
));
eventHandlersFileContent += constructImportSection(imports);
eventHandlersFileContent += '\n';
eventHandlersFileContent += constructExportSection(functionNames);
console.log("The 'eventsHandlers' file content:");
console.log(eventHandlersFileContent);
writeFileSync(codeDirectory + eventHandlersFile, eventHandlersFileContent);
} catch (err) {
console.error(err);
}