-
Notifications
You must be signed in to change notification settings - Fork 2.3k
/
build.plugins.js
77 lines (71 loc) · 1.53 KB
/
build.plugins.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
const { readdirSync, statSync, writeFileSync } = require('fs');
const { join } = require('path');
function isNonEmptyFolder(folderPath) {
const items = readdirSync(folderPath);
// Check if there are any items in the folder
return items.some((item) => {
const fullPath = join(folderPath, item);
// Check if the item is a file or a non-empty directory
const stats = statSync(fullPath);
if (stats.isDirectory()) {
return isNonEmptyFolder(fullPath); // Recursively check subfolders
}
return true; // It's a file
});
}
// Function to get all non-empty folders
function getNonEmptyFolders(rootFolder) {
const result = [];
const items = readdirSync(rootFolder);
items.forEach((item) => {
const fullPath = join(rootFolder, item);
const stats = statSync(fullPath);
if (stats.isDirectory() && isNonEmptyFolder(fullPath)) {
result.push(item);
}
});
return result;
}
const abc = [
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
];
const list = getNonEmptyFolders('./libraries/plugins/src/list');
const fileContent = `${list
.map((p, index) => {
return `import Module${abc[
index
].toUpperCase()} from '@gitroom/plugins/list/${p}/backend/module';`;
})
.join('\n')}
export default [${list
.map((p, index) => {
return `Module${abc[index].toUpperCase()}`;
})
.join(', ')}];
`;
writeFileSync('./libraries/plugins/src/plugins.ts', fileContent);