diff --git a/cmd/jpictl/config.go b/cmd/jpictl/config.go index ec20b7e..d58439d 100644 --- a/cmd/jpictl/config.go +++ b/cmd/jpictl/config.go @@ -17,5 +17,6 @@ var cfg = &Config{ func (cfg *Config) LoadZones(resolve bool) (*zones.Zones, error) { return zones.New(cfg.Base, cfg.Domain, zones.ResolvePublicAddresses(resolve), + zones.WithLogger(log), ) } diff --git a/cmd/jpictl/log.go b/cmd/jpictl/log.go index 963fad5..bb5f65c 100644 --- a/cmd/jpictl/log.go +++ b/cmd/jpictl/log.go @@ -7,6 +7,7 @@ import ( "darvaza.org/slog" ) +// TODO: make log level configurable via flags var ( log = zerolog.New(nil, slog.Debug) ) diff --git a/pkg/zones/options.go b/pkg/zones/options.go index 4c1e806..76a69bd 100644 --- a/pkg/zones/options.go +++ b/pkg/zones/options.go @@ -5,10 +5,12 @@ import ( "path/filepath" "darvaza.org/resolver" + "darvaza.org/slog" + "darvaza.org/slog/handlers/discard" "github.com/hack-pad/hackpadfs/os" ) -// A ScanOption preconfigures the Zones before scanning +// A ScanOption pre-configures the Zones before scanning type ScanOption func(*Zones, *ScanOptions) error // ScanOptions contains flags used by the initial scan @@ -17,6 +19,10 @@ type ScanOptions struct { // pre-populate Machine.PublicAddresses during the // initial scan DontResolvePublicAddresses bool + + // Logger specifies the logger to be used. otherwise + // the scanner will be mute + Logger slog.Logger } // ResolvePublicAddresses instructs the scanner to use @@ -55,6 +61,18 @@ func WithResolver(h resolver.Resolver) ScanOption { } } +// WithLogger specifies what to use for logging +func WithLogger(log slog.Logger) ScanOption { + return func(m *Zones, opt *ScanOptions) error { + if log == nil { + log = discard.New() + } + + opt.Logger = log + return nil + } +} + func (m *Zones) setDefaults(opt *ScanOptions) error { if m.resolver == nil { h := resolver.NewCloudflareLookuper() @@ -64,6 +82,12 @@ func (m *Zones) setDefaults(opt *ScanOptions) error { } } + if opt.Logger == nil { + if err := WithLogger(nil)(m, opt); err != nil { + return err + } + } + return nil }