diff options
Diffstat (limited to 'plugin.go')
-rw-r--r-- | plugin.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/plugin.go b/plugin.go new file mode 100644 index 0000000..d4e3d27 --- /dev/null +++ b/plugin.go @@ -0,0 +1,45 @@ +package main + +import ( + "log" + "os" + "path/filepath" + "plugin" + "sync" +) + +var plugins []*plugin.Plugin +var pluginsMu sync.RWMutex + +func loadPlugins() error { + executable, err := os.Executable() + if err != nil { + return err + } + + path := filepath.Dir(executable) + "/plugins" + os.Mkdir(path, 0777) + + dir, err := os.ReadDir(path) + if err != nil { + return err + } + + pluginsMu.Lock() + defer pluginsMu.Unlock() + + plugins = []*plugin.Plugin{} + + for _, file := range dir { + p, err := plugin.Open(path + "/" + file.Name()) + if err != nil { + log.Print("{←|⇶} ", err) + continue + } + + plugins = append(plugins, p) + } + + log.Print("{←|⇶} load plugins") + return nil +} |