Files
APIPark/module/dynamic-module/driver/load.go
T
2024-08-12 21:38:09 +08:00

48 lines
748 B
Go

package driver
import (
"embed"
"path"
"github.com/eolinker/eosc/log"
)
var (
//go:embed embed
pluginDir embed.FS
)
func init() {
err := LoadPlugins(&pluginDir, "embed", "plugin.yml")
if err != nil {
panic(err)
}
}
func LoadPlugins(fs *embed.FS, dir string, target string) error {
entries, err := fs.ReadDir(dir)
if err != nil {
return err
}
for _, e := range entries {
if !e.IsDir() {
continue
}
filePath := path.Join(dir, e.Name(), target)
fileContent, err := fs.ReadFile(filePath)
if err != nil {
return err
}
pluginCfg, err := Read(fileContent)
if err != nil {
log.Errorf("read inert plugin file(%s) error: %v", filePath, err)
return err
}
Register(NewDriver(pluginCfg))
}
return err
}