123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package main
- import (
- "os"
- "path"
- "plugin"
- )
- func getPlugins(pluginDir string) ([]func(string), error) {
- pDir, err := os.Open(pluginDir)
- if err != nil {
- return nil, err
- }
- pFiles, err := pDir.Readdir(0)
- if err != nil {
- return nil, err
- }
- var ret []func(string)
- for _, pFile := range pFiles {
- if pFile.IsDir() {
- continue
- }
- p, err := plugin.Open(path.Join(pluginDir, pFile.Name()))
- if err != nil {
- return nil, err
- }
- sayHello, err := p.Lookup("SayHello")
- if err != nil {
- return nil, err
- }
- ret = append(ret, sayHello.(func(string)))
- }
- return ret, nil
- }
- func main() {
- pluginDir := os.Args[1]
- ps, err := getPlugins(pluginDir)
- if err != nil {
- panic(err)
- }
- for _, p := range ps {
- p("Gildas")
- }
- }
|