From b3fbf325227e4c468aabafa6cca259fc49f765aa Mon Sep 17 00:00:00 2001 From: Chris Werner Rau Date: Fri, 16 Aug 2024 02:01:20 +0200 Subject: [PATCH] feat: allow plugins block in plugin files (#2770) --- internal/config/plugin.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/internal/config/plugin.go b/internal/config/plugin.go index c676f87f..3b83ffa4 100644 --- a/internal/config/plugin.go +++ b/internal/config/plugin.go @@ -82,13 +82,21 @@ func (p Plugins) loadPluginDir(dir string) error { if file.IsDir() || !isYamlFile(file.Name()) { continue } - bb, err := os.ReadFile(filepath.Join(dir, file.Name())) + fileName := filepath.Join(dir, file.Name()) + fileContent, err := os.ReadFile(fileName) if err != nil { errs = errors.Join(errs, err) } var plugin Plugin - if err = yaml.Unmarshal(bb, &plugin); err != nil { - return err + if err = yaml.Unmarshal(fileContent, &plugin); err != nil { + var plugins Plugins + if err = yaml.Unmarshal(fileContent, &plugins); err != nil { + return fmt.Errorf("cannot parse %s into either a single plugin nor plugins: %w", fileName, err) + } + for name, plugin := range plugins.Plugins { + p.Plugins[name] = plugin + } + continue } p.Plugins[strings.TrimSuffix(file.Name(), filepath.Ext(file.Name()))] = plugin }