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
+}