handle legacy plugins in plugin loader

This commit is contained in:
Eugene Pankov 2021-07-02 00:09:32 +02:00
parent 4569126322
commit cb06a8e493
No known key found for this signature in database
GPG Key ID: 5896FCBBDD1CF4F4
3 changed files with 14 additions and 5 deletions

View File

@ -125,14 +125,20 @@ export async function findPlugins (): Promise<PluginInfo[]> {
console.log(`Found ${name} in ${pluginDir}`)
if (foundPlugins.some(x => x.name === name)) {
console.info(`Plugin ${packageName} already exists, overriding`)
foundPlugins = foundPlugins.filter(x => x.name !== name)
const existing = foundPlugins.find(x => x.name === name)
if (existing) {
if (existing.isLegacy) {
console.info(`Plugin ${packageName} already exists, overriding`)
foundPlugins = foundPlugins.filter(x => x.name !== name)
} else {
console.info(`Plugin ${packageName} already exists, skipping`)
continue
}
}
try {
const info = JSON.parse(await fs.readFile(infoPath, { encoding: 'utf-8' }))
if (!info.keywords || !(info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin') || !info.keywords.includes('tabby-plugin') || info.keywords.includes('tabby-builtin-plugin'))) {
if (!info.keywords || !(info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin') || info.keywords.includes('tabby-plugin') || info.keywords.includes('tabby-builtin-plugin'))) {
continue
}
let author = info.author
@ -141,6 +147,7 @@ export async function findPlugins (): Promise<PluginInfo[]> {
name: name,
packageName: packageName,
isBuiltin: pluginDir === builtinPluginsPath,
isLegacy: info.keywords.includes('terminus-plugin') || info.keywords.includes('terminus-builtin-plugin'),
version: info.version,
description: info.description,
author,

View File

@ -5,6 +5,7 @@ export interface PluginInfo {
description: string
packageName: string
isBuiltin: boolean
isLegacy: boolean
version: string
author: string
homepage?: string

View File

@ -22,7 +22,8 @@ export class PluginManagerService {
@Inject(BOOTSTRAP_DATA) bootstrapData: BootstrapData,
) {
this.logger = log.create('pluginManager')
this.installedPlugins = bootstrapData.installedPlugins
this.installedPlugins = [...bootstrapData.installedPlugins]
this.installedPlugins.sort((a, b) => a.name.localeCompare(b.name))
this.userPluginsPath = bootstrapData.userPluginsPath
}