This repository was archived by the owner on May 14, 2022. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +33
-21
lines changed Expand file tree Collapse file tree 2 files changed +33
-21
lines changed Original file line number Diff line number Diff line change 1
1
package main
2
2
3
- import "fmt"
4
- import "github.com/getstackhead/pluginlib "
3
+ import (
4
+ "fmt "
5
5
6
- type MyPlugin struct {
6
+ "github.com/getstackhead/pluginlib"
7
+ )
8
+
9
+ var Plugin MyPlugin
10
+ var PluginConfig = pluginlib.PluginConfig {
11
+ Name : "Test" ,
12
+ Description : "This is an example StackHead Proxy plugin" ,
13
+ Version : "0.0.0-dev" ,
14
+ Authors : []string {"Mario Lubenka" },
15
+ PluginType : pluginlib .PluginType .PROXY ,
7
16
}
8
17
9
- func (p MyPlugin ) GetConfig () pluginlib.PluginConfig {
10
- return pluginlib.PluginConfig {
11
- Name : "Test" ,
12
- Description : "This is an example StackHead Proxy plugin" ,
13
- Version : "0.0.0-dev" ,
14
- Author : "Mario Lubenka" ,
15
- PluginType : pluginlib .PluginType .PROXY ,
16
- }
18
+ type MyPlugin struct {
17
19
}
18
20
19
21
func (p MyPlugin ) Deploy (project pluginlib.Project ) {
@@ -27,5 +29,3 @@ func (p MyPlugin) Destroy(project pluginlib.Project) {
27
29
func (p MyPlugin ) Setup () {
28
30
fmt .Println ("Setup..." )
29
31
}
30
-
31
- var Plugin MyPlugin
Original file line number Diff line number Diff line change @@ -11,24 +11,36 @@ type Plugin interface {
11
11
Destroy (project Project )
12
12
}
13
13
14
- func LoadPlugin (path string ) (Plugin , error ) {
14
+ func LoadPlugin (path string ) (Plugin , * PluginConfig , error ) {
15
15
// load module
16
16
plug , err := plugin .Open (path )
17
17
if err != nil {
18
- return nil , err
18
+ return nil , nil , err
19
19
}
20
20
21
21
// 2. look up a symbol (an exported function or variable)
22
22
symPlugin , err := plug .Lookup ("Plugin" )
23
23
if err != nil {
24
- return nil , err
24
+ return nil , nil , err
25
+ }
26
+ var ok bool
27
+ var pluginObj Plugin
28
+ pluginObj , ok = symPlugin .(Plugin )
29
+ if ! ok {
30
+ return nil , nil , err
25
31
}
26
32
27
- // 3. Assert that loaded symbol is of a desired type
28
- var plugin Plugin
29
- plugin , ok := symPlugin .(Plugin )
33
+ // 3. look up a symbol (an exported function or variable)
34
+ symPluginConfig , err := plug .Lookup ("PluginConfig" )
35
+ if err != nil {
36
+ return nil , nil , err
37
+ }
38
+ var pluginConfig PluginConfig
39
+ pluginConfig , ok = symPluginConfig .(PluginConfig )
30
40
if ! ok {
31
- return nil , err
41
+ return nil , nil , err
32
42
}
33
- return plugin , nil
43
+
44
+ // 4. Assert that loaded symbol is of a desired type
45
+ return pluginObj , & pluginConfig , nil
34
46
}
You can’t perform that action at this time.
0 commit comments