aboutsummaryrefslogtreecommitdiffstats
path: root/plugins.go
diff options
context:
space:
mode:
authorterminaldweller <devi@terminaldweller.com>2024-06-03 19:09:41 +0000
committerterminaldweller <devi@terminaldweller.com>2024-06-03 19:09:41 +0000
commitf8738b563757158c8fe6ffe77d4cdc5dad1e2a62 (patch)
treeecb361b2fa330462ea9895b92f84dcf388afb48a /plugins.go
parentsome cleanup (diff)
downloadmilla-f8738b563757158c8fe6ffe77d4cdc5dad1e2a62.tar.gz
milla-f8738b563757158c8fe6ffe77d4cdc5dad1e2a62.zip
first lua script, WIP, rss script incoming
Diffstat (limited to 'plugins.go')
-rw-r--r--plugins.go38
1 files changed, 20 insertions, 18 deletions
diff --git a/plugins.go b/plugins.go
index fadc717..fa02615 100644
--- a/plugins.go
+++ b/plugins.go
@@ -1,11 +1,10 @@
package main
import (
- "fmt"
"log"
- "os"
"reflect"
+ "github.com/lrstanley/girc"
lua "github.com/yuin/gopher-lua"
)
@@ -180,33 +179,36 @@ func RegisterCustomLuaTypes(luaState *lua.LState) {
registerStructAsLuaMetaTable[LogModel](luaState, checkStruct, LogModel{}, "log_model")
}
-func returnAllPlugins(pluginPath string) ([]string, error) {
- pluginList := make([]string, 0)
+func sendMessageClosure(luaState *lua.LState, client *girc.Client) func(*lua.LState) int {
+ return func(luaState *lua.LState) int {
+ message := luaState.CheckString(1)
+ target := luaState.CheckString(2)
- files, err := os.ReadDir(pluginPath)
- if err != nil {
- return pluginList, fmt.Errorf("Error reading plugins directory: %v", err)
- }
+ client.Cmd.Message(target, message)
- for _, file := range files {
- pluginList = append(pluginList, file.Name())
+ return 0
}
-
- return pluginList, nil
}
-func LoadAllPlugins(appConfig *TomlConfig) {
+func RunScript(scriptPath string, client *girc.Client) {
luaState := lua.NewState()
defer luaState.Close()
RegisterCustomLuaTypes(luaState)
- allPlugins, err := returnAllPlugins(appConfig.PluginPath)
- if err != nil {
- luaState.Close()
+ luaState.SetGlobal("send_message", luaState.NewFunction(sendMessageClosure(luaState, client)))
- log.Fatal(err) //nolint: gocritic
+ log.Print("Running script: ", scriptPath)
+ err := luaState.DoFile(scriptPath)
+
+ if err != nil {
+ log.Print(err)
}
+}
- log.Println(allPlugins)
+func LoadAllPlugins(appConfig *TomlConfig, client *girc.Client) {
+ for _, scriptPath := range appConfig.Plugins {
+ log.Print("Loading plugin: ", scriptPath)
+ go RunScript(scriptPath, client)
+ }
}