-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
44 lines (33 loc) · 1.09 KB
/
Copy pathindex.js
File metadata and controls
44 lines (33 loc) · 1.09 KB
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
import fs from 'node:fs'
import path from 'node:path'
const appDir = './plugins/CodeTime-plugin/apps'
function readAppFiles(dir = appDir, prefix = '') {
const entries = fs.readdirSync(dir, { withFileTypes: true })
const files = []
for (const entry of entries) {
const relative = prefix ? `${prefix}/${entry.name}` : entry.name
const fullPath = path.join(dir, entry.name)
if (entry.isDirectory()) {
files.push(...readAppFiles(fullPath, relative))
continue
}
if (entry.isFile() && entry.name.endsWith('.js')) {
files.push(relative)
}
}
return files.sort()
}
const files = readAppFiles()
logger.info('CodeTime-plugin 载入成功')
const loaded = await Promise.allSettled(files.map((file) => import(`./apps/${file}`)))
const apps = {}
for (const i in files) {
const name = path.basename(files[i], '.js')
if (loaded[i].status !== 'fulfilled') {
logger.error(`CodeTime-plugin 载入失败:${logger.red(name)}`)
logger.error(loaded[i].reason)
continue
}
apps[name] = loaded[i].value[Object.keys(loaded[i].value)[0]]
}
export { apps }