diff --git a/blogo/blogo.go b/blogo/blogo.go index 3187848..364f55c 100644 --- a/blogo/blogo.go +++ b/blogo/blogo.go @@ -76,6 +76,13 @@ func New(opts ...Options) Blogo { func (b *blogo) Use(p Plugin) { log := b.log.With(slog.String("plugin", p.Name())) + if p, ok := p.(ListPlugin); ok { + log.Debug("Added plugin", slog.String("type", "PluginList")) + for _, p := range p.Plugins() { + b.Use(p) + } + } + if p, ok := p.(SourcerPlugin); ok { log.Debug("Added plugin", slog.String("type", "SourcerPlugin")) b.sources = append(b.sources, p) diff --git a/blogo/plugins.go b/blogo/plugins.go index 63d71ed..a717885 100644 --- a/blogo/plugins.go +++ b/blogo/plugins.go @@ -24,6 +24,11 @@ type Plugin interface { Name() string } +type ListPlugin interface { + Plugin + Plugins() []Plugin +} + type RendererPlugin interface { Plugin Render(src fs.File, out io.Writer) error