Browse Source

Dedicated function for the plugin loading

Gildas Chabot 8 years ago
parent
commit
dc38bb1dc2
1 changed files with 18 additions and 7 deletions
  1. 18 7
      main.go

+ 18 - 7
main.go

@@ -1,11 +1,24 @@
1
 package main
1
 package main
2
 
2
 
3
 import (
3
 import (
4
+	"log"
4
 	"os"
5
 	"os"
5
 	"path"
6
 	"path"
6
 	"plugin"
7
 	"plugin"
7
 )
8
 )
8
 
9
 
10
+func loadPlugin(path string) (func(string), error) {
11
+	p, err := plugin.Open(path)
12
+	if err != nil {
13
+		return nil, err
14
+	}
15
+	sayHello, err := p.Lookup("SayHello")
16
+	if err != nil {
17
+		return nil, err
18
+	}
19
+	return sayHello.(func(string)), nil
20
+}
21
+
9
 func getPlugins(pluginDir string) ([]func(string), error) {
22
 func getPlugins(pluginDir string) ([]func(string), error) {
10
 	pDir, err := os.Open(pluginDir)
23
 	pDir, err := os.Open(pluginDir)
11
 	if err != nil {
24
 	if err != nil {
@@ -21,15 +34,13 @@ func getPlugins(pluginDir string) ([]func(string), error) {
21
 		if pFile.IsDir() {
34
 		if pFile.IsDir() {
22
 			continue
35
 			continue
23
 		}
36
 		}
24
-		p, err := plugin.Open(path.Join(pluginDir, pFile.Name()))
25
-		if err != nil {
26
-			return nil, err
27
-		}
28
-		sayHello, err := p.Lookup("SayHello")
37
+
38
+		p, err := loadPlugin(path.Join(pluginDir, pFile.Name()))
29
 		if err != nil {
39
 		if err != nil {
30
-			return nil, err
40
+			log.Printf("Failed to load pluging %s", p)
41
+		} else {
42
+			ret = append(ret, p)
31
 		}
43
 		}
32
-		ret = append(ret, sayHello.(func(string)))
33
 	}
44
 	}
34
 	return ret, nil
45
 	return ret, nil
35
 }
46
 }