51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package reader
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/micro/go-micro/v3/config/encoder"
 | 
						|
	"github.com/micro/go-micro/v3/config/encoder/hcl"
 | 
						|
	"github.com/micro/go-micro/v3/config/encoder/json"
 | 
						|
	"github.com/micro/go-micro/v3/config/encoder/toml"
 | 
						|
	"github.com/micro/go-micro/v3/config/encoder/xml"
 | 
						|
	"github.com/micro/go-micro/v3/config/encoder/yaml"
 | 
						|
)
 | 
						|
 | 
						|
type Options struct {
 | 
						|
	Encoding              map[string]encoder.Encoder
 | 
						|
	DisableReplaceEnvVars bool
 | 
						|
}
 | 
						|
 | 
						|
type Option func(o *Options)
 | 
						|
 | 
						|
func NewOptions(opts ...Option) Options {
 | 
						|
	options := Options{
 | 
						|
		Encoding: map[string]encoder.Encoder{
 | 
						|
			"json": json.NewEncoder(),
 | 
						|
			"yaml": yaml.NewEncoder(),
 | 
						|
			"toml": toml.NewEncoder(),
 | 
						|
			"xml":  xml.NewEncoder(),
 | 
						|
			"hcl":  hcl.NewEncoder(),
 | 
						|
			"yml":  yaml.NewEncoder(),
 | 
						|
		},
 | 
						|
	}
 | 
						|
	for _, o := range opts {
 | 
						|
		o(&options)
 | 
						|
	}
 | 
						|
	return options
 | 
						|
}
 | 
						|
 | 
						|
func WithEncoder(e encoder.Encoder) Option {
 | 
						|
	return func(o *Options) {
 | 
						|
		if o.Encoding == nil {
 | 
						|
			o.Encoding = make(map[string]encoder.Encoder)
 | 
						|
		}
 | 
						|
		o.Encoding[e.String()] = e
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// WithDisableReplaceEnvVars disables the environment variable interpolation preprocessor
 | 
						|
func WithDisableReplaceEnvVars() Option {
 | 
						|
	return func(o *Options) {
 | 
						|
		o.DisableReplaceEnvVars = true
 | 
						|
	}
 | 
						|
}
 |