|
|
@@ -1,61 +0,0 @@
|
|
|
-package main
|
|
|
-
|
|
|
-import (
|
|
|
- "log"
|
|
|
- "os"
|
|
|
- "path/filepath"
|
|
|
- "plugin"
|
|
|
-)
|
|
|
-
|
|
|
-type Plugin struct {
|
|
|
- *plugin.Plugin
|
|
|
-}
|
|
|
-
|
|
|
-func newPlugin(path string) (*Plugin, error) {
|
|
|
- p, err := plugin.Open(path)
|
|
|
- if err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
-
|
|
|
- return &Plugin{Plugin: p}, nil
|
|
|
-}
|
|
|
-
|
|
|
-func (p *Plugin) Name() string {
|
|
|
- s, _ := p.Lookup("Name")
|
|
|
- return *(s).(*string)
|
|
|
-}
|
|
|
-
|
|
|
-func loadPlugins() error {
|
|
|
- path, err := os.UserConfigDir()
|
|
|
- if err != nil {
|
|
|
- log.Fatal(err)
|
|
|
- }
|
|
|
-
|
|
|
- path = filepath.Join(path, name, "plugins")
|
|
|
- err = os.MkdirAll(path, os.ModePerm)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- entries, err := os.ReadDir(path)
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- for _, entry := range entries {
|
|
|
- if entry.IsDir() {
|
|
|
- continue
|
|
|
- }
|
|
|
-
|
|
|
- if filepath.Ext(entry.Name()) == ".so" {
|
|
|
- p, err := newPlugin(filepath.Join(path, entry.Name()))
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- plugins[p.Name()] = p
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return nil
|
|
|
-}
|