Skip to content

Commit

Permalink
Refactor plugin directory validation & deduplication
Browse files Browse the repository at this point in the history
Updated the logic to check for invalid plugin directories: besides removing those that failed the `stat` operaton, the code now also cleans duplicates. Furthermore, when adding local plugins, it now checks if the plugin directory has already been added to localPluginDirectories, avoiding unnecessary repetition.
qianlifeng committed Mar 2, 2024
1 parent b12de66 commit d4d8c75
Showing 1 changed file with 18 additions and 8 deletions.
26 changes: 18 additions & 8 deletions Wox/plugin/system/wpm.go
Original file line number Diff line number Diff line change
@@ -111,17 +111,21 @@ func (w *WPMPlugin) Init(ctx context.Context, initParams plugin.InitParams) {
return
}

// remove invalid directories
w.localPluginDirectories = lo.Filter(localPluginDirs, func(directory string, _ int) bool {
_, statErr := os.Stat(directory)
if statErr != nil {
// remove invalid and duplicate directories
var pluginDirs []string
for _, pluginDir := range localPluginDirs {
if _, statErr := os.Stat(pluginDir); statErr != nil {
w.api.Log(ctx, plugin.LogLevelWarning, fmt.Sprintf("Failed to stat local plugin directory, remove it: %s", statErr.Error()))
os.RemoveAll(directory)
return false
os.RemoveAll(pluginDir)
continue
}
return true
})

if !lo.Contains(pluginDirs, pluginDir) {
pluginDirs = append(pluginDirs, pluginDir)
}
}

w.localPluginDirectories = pluginDirs
for _, directory := range w.localPluginDirectories {
w.loadDevPlugin(ctx, directory)
}
@@ -433,6 +437,12 @@ func (w *WPMPlugin) addCommand(ctx context.Context, query plugin.Query) []plugin
}

pluginDirectory := pluginDirectories[0]

if lo.Contains(w.localPluginDirectories, pluginDirectory) {
w.api.Notify(ctx, "Already added", "The plugin directory has already been added")
return []plugin.QueryResult{}
}

w.api.Log(ctx, plugin.LogLevelInfo, fmt.Sprintf("Add local plugin: %s", pluginDirectory))
w.localPluginDirectories = append(w.localPluginDirectories, pluginDirectory)
w.saveLocalPluginDirectories(ctx)

0 comments on commit d4d8c75

Please sign in to comment.