gitops-engine/pkg/engine/engine_options.go

57 lines
1.1 KiB
Go

package engine
import (
"github.com/go-logr/logr"
"k8s.io/klog/v2/textlogger"
"github.com/argoproj/gitops-engine/pkg/utils/kube"
"github.com/argoproj/gitops-engine/pkg/utils/tracing"
)
type Option func(*options)
type options struct {
log logr.Logger
kubectl kube.Kubectl
}
func applyOptions(opts []Option) options {
log := textlogger.NewLogger(textlogger.NewConfig())
o := options{
log: log,
kubectl: &kube.KubectlCmd{
Log: log,
Tracer: tracing.NopTracer{},
},
}
for _, opt := range opts {
opt(&o)
}
return o
}
func WithLogr(log logr.Logger) Option {
return func(o *options) {
o.log = log
if kcmd, ok := o.kubectl.(*kube.KubectlCmd); ok {
kcmd.Log = log
}
}
}
// SetTracer sets the tracer to use.
func SetTracer(tracer tracing.Tracer) Option {
return func(o *options) {
if kcmd, ok := o.kubectl.(*kube.KubectlCmd); ok {
kcmd.Tracer = tracer
}
}
}
// WithKubectl allows to override kubectl wrapper implementation.
func WithKubectl(kubectl kube.Kubectl) Option {
return func(o *options) {
o.kubectl = kubectl
}
}