Skip to content
This repository was archived by the owner on May 14, 2022. It is now read-only.

Commit d4f5de7

Browse files
committed
chore: consider PluginConfig symbol
1 parent 061051c commit d4f5de7

File tree

2 files changed

+33
-21
lines changed

2 files changed

+33
-21
lines changed

example/main.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
package main
22

3-
import "fmt"
4-
import "github.com/getstackhead/pluginlib"
3+
import (
4+
"fmt"
55

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,
716
}
817

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 {
1719
}
1820

1921
func (p MyPlugin) Deploy(project pluginlib.Project) {
@@ -27,5 +29,3 @@ func (p MyPlugin) Destroy(project pluginlib.Project) {
2729
func (p MyPlugin) Setup() {
2830
fmt.Println("Setup...")
2931
}
30-
31-
var Plugin MyPlugin

plugin.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,36 @@ type Plugin interface {
1111
Destroy(project Project)
1212
}
1313

14-
func LoadPlugin(path string) (Plugin, error) {
14+
func LoadPlugin(path string) (Plugin, *PluginConfig, error) {
1515
// load module
1616
plug, err := plugin.Open(path)
1717
if err != nil {
18-
return nil, err
18+
return nil, nil, err
1919
}
2020

2121
// 2. look up a symbol (an exported function or variable)
2222
symPlugin, err := plug.Lookup("Plugin")
2323
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
2531
}
2632

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)
3040
if !ok {
31-
return nil, err
41+
return nil, nil, err
3242
}
33-
return plugin, nil
43+
44+
// 4. Assert that loaded symbol is of a desired type
45+
return pluginObj, &pluginConfig, nil
3446
}

0 commit comments

Comments
 (0)