aboutsummaryrefslogtreecommitdiff
path: root/plugin.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin.go')
-rw-r--r--plugin.go45
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
+}