feat: add compile plugin info

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2020-12-17 16:58:37 +08:00
parent aa182fb169
commit f35c8cd3fb
6 changed files with 40 additions and 6 deletions

View File

@ -92,6 +92,16 @@ export class PluginConfigManager {
} else {
value = configLoader.load(base.read(metadata.file))
console.debug(`[${plugin.description.name}] Load Config ${metadata.variable} from file ${metadata.file} =>\n${JSON.stringify(value, undefined, 4)}`)
if (metadata.default) {
let needSave = false
for (const key of Object.keys(metadata.default)) {
if (!value[key]) {
value[key] = metadata.default[key]
needSave = true
}
}
needSave && base.save(metadata.file, configLoader.dump(value))
}
}
this.defienConfigProp(plugin, metadata, value)
} catch (error) {

View File

@ -67,6 +67,10 @@ export namespace interfaces {
* 配置文件版本号
*/
version?: number
/**
* 默认配置
*/
default?: any
/**
* 实体变量名称
*/

View File

@ -81,9 +81,12 @@ export class PluginManagerImpl implements plugin.PluginManager {
this.initialize()
for (const [, scanner] of this.sacnnerMap) {
try {
scanner.scan(folder).forEach(loadMetadata => {
console.i18n('ms.plugin.manager.scan', { scanner: scanner.type, folder })
let plugins = scanner.scan(folder)
console.i18n('ms.plugin.manager.scan.finish', { scanner: scanner.type, folder, size: plugins.length })
plugins.forEach(loadMetadata => {
try {
this.loadPlugin(scanner.load(loadMetadata))
this.loadAndRequirePlugin(loadMetadata)
} catch (error) {
console.error(`plugin scanner ${scanner.type} load ${loadMetadata.file} occurred error ${error}`)
console.ex(error)
@ -158,6 +161,20 @@ export class PluginManagerImpl implements plugin.PluginManager {
}
}
private loadAndRequirePlugin(loadMetadata: plugin.PluginLoadMetadata) {
let startTime = Date.now()
let metadata = this.loadPlugin(loadMetadata.scanner.load(loadMetadata))
console.i18n('ms.plugin.manager.build', {
name: loadMetadata.metadata.name,
version: loadMetadata.metadata.version,
file: loadMetadata.file.toString().replace(root, ''),
scanner: loadMetadata.scanner.type,
loader: loadMetadata.loader.type,
cost: (Date.now() - startTime) / 1000
})
return metadata
}
/**
* 从文件加载插件
* @param file java.io.File
@ -165,7 +182,7 @@ export class PluginManagerImpl implements plugin.PluginManager {
loadFromFile(file: string, scanner = this.sacnnerMap.get('file')): plugin.Plugin {
if (!file) { throw new Error('plugin file can\'t be undefiend!') }
if (!scanner) { throw new Error('plugin scanner can\'t be undefiend!') }
let metadata = this.loadPlugin(scanner.load(scanner.read(file)))
let metadata = this.loadAndRequirePlugin(scanner.read(file))
let plugin = this.buildPlugin(metadata)
this.load(plugin)
this.enable(plugin)

View File

@ -26,7 +26,6 @@ export class JSFileScanner implements plugin.PluginScanner {
private scanFolder(folder: any): string[] {
var files = []
console.i18n('ms.plugin.manager.scan', { folder })
this.checkUpdateFolder(folder)
// must check file is exist maybe is a illegal symbolic link file
fs.list(folder).forEach((path: any) => {