From e293de17ebee1b9e193e609f77a605941f7e029d Mon Sep 17 00:00:00 2001 From: Jakub Sztandera Date: Thu, 13 Jul 2017 21:57:40 +0200 Subject: [PATCH] plugin: fix error when plugins dir does not exist License: MIT Signed-off-by: Jakub Sztandera --- plugin/loader/load.go | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/plugin/loader/load.go b/plugin/loader/load.go index d1489ccc6..2555277b0 100644 --- a/plugin/loader/load.go +++ b/plugin/loader/load.go @@ -2,6 +2,7 @@ package loader import ( "fmt" + "os" "github.com/ipfs/go-ipfs/plugin" @@ -21,7 +22,7 @@ func LoadPlugins(pluginDir string) ([]plugin.Plugin, error) { plMap[v.Name()] = v } - newPls, err := loadPluginsFunc(pluginDir) + newPls, err := loadDynamicPlugins(pluginDir) if err != nil { return nil, err } @@ -29,7 +30,10 @@ func LoadPlugins(pluginDir string) ([]plugin.Plugin, error) { for _, pl := range newPls { if ppl, ok := plMap[pl.Name()]; ok { // plugin is already preloaded - return nil, fmt.Errorf("plugin: %s, is duplicated in version: %s, while trying to load dynamically: %s", ppl.Name(), ppl.Version(), pl.Version()) + return nil, fmt.Errorf( + "plugin: %s, is duplicated in version: %s, "+ + "while trying to load dynamically: %s", + ppl.Name(), ppl.Version(), pl.Version()) } plMap[pl.Name()] = pl } @@ -47,3 +51,15 @@ func LoadPlugins(pluginDir string) ([]plugin.Plugin, error) { err = run(pls) return nil, err } + +func loadDynamicPlugins(pluginDir string) ([]plugin.Plugin, error) { + _, err := os.Stat(pluginDir) + if os.IsNotExist(err) { + return nil, nil + } + if err != nil { + return nil, err + } + + return loadPluginsFunc(pluginDir) +}