ALFRED/plugin_manager/tools.go

58 lines
905 B
Go
Raw Normal View History

/**
* @Author: KLIPFEL Arthur
* @Date: 2018-08-24 12:17:17
*/
package plugin_manager
import (
tb "gopkg.in/tucnak/telebot.v2"
"io/ioutil"
"log"
"plugin"
"strings"
)
type Plugin interface {
Load()
HandleMessage(bot *tb.Bot, msg string)
Unload()
}
func GetSoFiles(dir string) []string {
var slice []string
files, err := ioutil.ReadDir(dir)
if err != nil {
log.Fatal(err)
} else {
for _, f := range files {
if strings.HasSuffix(f.Name(), ".so") {
slice = append(slice, f.Name())
}
}
}
return slice
}
func LoadSoFile(file string) Plugin {
plug, err := plugin.Open(file)
if err != nil {
log.Fatal(err)
return nil
}
symPlugin, err := plug.Lookup("Plugin")
if err != nil {
log.Fatal(err)
return nil
}
var plugin Plugin
plugin, ok := symPlugin.(Plugin)
if !ok {
log.Fatal(file + ": unexpected type from module symbol")
return nil
}
return plugin
}