feat: allow plugins block in plugin files (#2770)

mine
Chris Werner Rau 2024-08-16 02:01:20 +02:00 committed by GitHub
parent 8e506b66d9
commit b3fbf32522
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 11 additions and 3 deletions

View File

@ -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
}