From 067c33ae5e31ecb83975b19a2d169dd7e284a3bc Mon Sep 17 00:00:00 2001 From: "Gustavo L de Mello (Guz)" Date: Thu, 23 Jan 2025 17:18:04 -0300 Subject: [PATCH] refactor(blogo,plugins,multisourcer): remove uncessecary panicOnInit and move code to follow code style --- blogo/plugins/multisourcer.go | 70 +++++++++++++++++------------------ 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/blogo/plugins/multisourcer.go b/blogo/plugins/multisourcer.go index 1cf4c0b..456a420 100644 --- a/blogo/plugins/multisourcer.go +++ b/blogo/plugins/multisourcer.go @@ -28,29 +28,6 @@ import ( const multiSourcerName = "blogo-multisourcer-sourcer" -type MultiSourcer interface { - plugin.Sourcer - plugin.WithPlugins -} - -type multiSourcer struct { - sources []plugin.Sourcer - - panicOnInit bool - skipOnSourceError bool - skipOnFSError bool - - log *slog.Logger -} - -type MultiSourcerOpts struct { - NotPanicOnInit bool - NotSkipOnSourceError bool - NotSkipOnFSError bool - - Logger *slog.Logger -} - func NewMultiSourcer(opts ...MultiSourcerOpts) MultiSourcer { opt := MultiSourcerOpts{} if len(opts) > 0 { @@ -63,16 +40,38 @@ func NewMultiSourcer(opts ...MultiSourcerOpts) MultiSourcer { opt.Logger = opt.Logger.WithGroup(multiSourcerName) return &multiSourcer{ - sources: []plugin.Sourcer{}, + plugins: []plugin.Sourcer{}, - panicOnInit: !opt.NotPanicOnInit, - skipOnSourceError: !opt.NotSkipOnSourceError, - skipOnFSError: !opt.NotSkipOnFSError, + skipOnSourceError: opt.SkipOnSourceError, + skipOnFSError: opt.SkipOnFSError, log: opt.Logger, } } +type MultiSourcer interface { + plugin.Sourcer + plugin.WithPlugins +} + +type MultiSourcerOpts struct { + SkipOnSourceError bool + SkipOnFSError bool + + Assertions tinyssert.Assertions + Logger *slog.Logger +} + +type multiSourcer struct { + plugins []plugin.Sourcer + + skipOnSourceError bool + skipOnFSError bool + + assert tinyssert.Assertions + log *slog.Logger +} + func (s *multiSourcer) Name() string { return multiSourcerName } @@ -82,28 +81,27 @@ func (s *multiSourcer) Use(p plugin.Plugin) { if plg, ok := p.(plugin.Sourcer); ok { log.Debug("Added sourcer plugin") - s.sources = append(s.sources, plg) + s.plugins = append(s.plugins, plg) } else { - m := fmt.Sprintf("failed to add plugin %q, since it doesn't implement plugin.Sourcer", p.Name()) - log.Error(m) - if s.panicOnInit { - panic(fmt.Sprintf("%s: %s", p.Name(), m)) - } + log.Error(fmt.Sprintf( + "Failed to add plugin %q, since it doesn't implement plugin.Sourcer", + p.Name(), + )) } } func (s *multiSourcer) Source() (fs.FS, error) { - log := s.log + log := s.log.With() fileSystems := []fs.FS{} - for _, ps := range s.sources { + for _, ps := range s.plugins { log = log.With(slog.String("plugin", ps.Name())) log.Info("Sourcing file system of plugin") f, err := ps.Source() if err != nil && s.skipOnSourceError { - log.Error( + log.Warn( "Failed to source file system of plugin, skipping", slog.String("error", err.Error()), )