| 20 | } |
| 21 | |
| 22 | func LoadPlugins(fs *embed.FS, dir string, target string) error { |
| 23 | entries, err := fs.ReadDir(dir) |
| 24 | if err != nil { |
| 25 | return err |
| 26 | } |
| 27 | |
| 28 | for _, e := range entries { |
| 29 | if !e.IsDir() { |
| 30 | continue |
| 31 | } |
| 32 | filePath := path.Join(dir, e.Name(), target) |
| 33 | fileContent, err := fs.ReadFile(filePath) |
| 34 | if err != nil { |
| 35 | return err |
| 36 | } |
| 37 | pluginCfg, err := Read(fileContent) |
| 38 | if err != nil { |
| 39 | log.Errorf("read inert plugin file(%s) error: %v", filePath, err) |
| 40 | return err |
| 41 | } |
| 42 | Register(NewDriver(pluginCfg)) |
| 43 | |
| 44 | } |
| 45 | |
| 46 | return err |
| 47 | } |