@cryptotaxi247 / kubo / commits / e293de17e

plugin: fix error when plugins dir does not exist

License: MIT Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>

Jakub Sztandera committed Jul 13, 2017 at 21:57 UTC e293de17ebee1b9e193e609f77a605941f7e029d
1 file changed +18 -2
plugin/loader/load.go
+18 -2
@@ -2,6 +2,7 @@ package loader
2
3 import (
4 "fmt"
5 + "os"
6
7 "github.com/ipfs/go-ipfs/plugin"
8
@@ -21,7 +22,7 @@ func LoadPlugins(pluginDir string) ([]plugin.Plugin, error) {
22 plMap[v.Name()] = v
23 }
24
24 - newPls, err := loadPluginsFunc(pluginDir)
25 + newPls, err := loadDynamicPlugins(pluginDir)
26 if err != nil {
27 return nil, err
28 }
@@ -29,7 +30,10 @@ func LoadPlugins(pluginDir string) ([]plugin.Plugin, error) {
30 for _, pl := range newPls {
31 if ppl, ok := plMap[pl.Name()]; ok {
32 // plugin is already preloaded
32 - return nil, fmt.Errorf("plugin: %s, is duplicated in version: %s, while trying to load dynamically: %s", ppl.Name(), ppl.Version(), pl.Version())
33 + return nil, fmt.Errorf(
34 + "plugin: %s, is duplicated in version: %s, "+
35 + "while trying to load dynamically: %s",
36 + ppl.Name(), ppl.Version(), pl.Version())
37 }
38 plMap[pl.Name()] = pl
39 }
@@ -47,3 +51,15 @@ func LoadPlugins(pluginDir string) ([]plugin.Plugin, error) {
51 err = run(pls)
52 return nil, err
53 }
54 +
55 +func loadDynamicPlugins(pluginDir string) ([]plugin.Plugin, error) {
56 + _, err := os.Stat(pluginDir)
57 + if os.IsNotExist(err) {
58 + return nil, nil
59 + }
60 + if err != nil {
61 + return nil, err
62 + }
63 +
64 + return loadPluginsFunc(pluginDir)
65 +}