Cleaned up documentation and removed stubs and TODOs throughout the application
This commit is contained in:
@@ -2,6 +2,7 @@ package sinks
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"gitea.maximumdirect.net/ejr/feedkit/config"
|
||||
)
|
||||
@@ -21,13 +22,40 @@ func NewRegistry() *Registry {
|
||||
}
|
||||
|
||||
func (r *Registry) Register(driver string, f Factory) {
|
||||
if r == nil {
|
||||
panic("sinks.Registry.Register: registry cannot be nil")
|
||||
}
|
||||
driver = strings.TrimSpace(driver)
|
||||
if driver == "" {
|
||||
panic("sinks.Registry.Register: driver cannot be empty")
|
||||
}
|
||||
if f == nil {
|
||||
panic(fmt.Sprintf("sinks.Registry.Register: factory cannot be nil (driver=%q)", driver))
|
||||
}
|
||||
if r.byDriver == nil {
|
||||
r.byDriver = map[string]Factory{}
|
||||
}
|
||||
if _, exists := r.byDriver[driver]; exists {
|
||||
panic(fmt.Sprintf("sinks.Registry.Register: driver %q already registered", driver))
|
||||
}
|
||||
r.byDriver[driver] = f
|
||||
}
|
||||
|
||||
func (r *Registry) Build(cfg config.SinkConfig) (Sink, error) {
|
||||
f, ok := r.byDriver[cfg.Driver]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unknown sink driver: %q", cfg.Driver)
|
||||
if r == nil {
|
||||
return nil, fmt.Errorf("sinks registry is nil")
|
||||
}
|
||||
return f(cfg)
|
||||
driver := strings.TrimSpace(cfg.Driver)
|
||||
f, ok := r.byDriver[driver]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unknown sink driver: %q", driver)
|
||||
}
|
||||
sink, err := f(cfg)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("build sink %q: %w", driver, err)
|
||||
}
|
||||
if sink == nil {
|
||||
return nil, fmt.Errorf("build sink %q: factory returned nil sink", driver)
|
||||
}
|
||||
return sink, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user