plugin: fix error when plugins dir does not exist

License: MIT
Signed-off-by: Jakub Sztandera <kubuxu@protonmail.ch>
This commit is contained in:
Jakub Sztandera 2017-07-13 21:57:40 +02:00
parent c569b0be8a
commit e293de17eb
No known key found for this signature in database
GPG Key ID: 9A9AF56F8B3879BA

View File

@ -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)
}