2019-05-30 23:11:13 +01:00
|
|
|
package reader
|
|
|
|
|
|
|
|
import (
|
2020-08-19 17:47:17 +03:00
|
|
|
"github.com/unistack-org/micro/v3/config/encoder"
|
|
|
|
"github.com/unistack-org/micro/v3/config/encoder/hcl"
|
|
|
|
"github.com/unistack-org/micro/v3/config/encoder/json"
|
|
|
|
"github.com/unistack-org/micro/v3/config/encoder/toml"
|
|
|
|
"github.com/unistack-org/micro/v3/config/encoder/xml"
|
|
|
|
"github.com/unistack-org/micro/v3/config/encoder/yaml"
|
2019-05-30 23:11:13 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
type Options struct {
|
2020-07-06 15:13:35 -04:00
|
|
|
Encoding map[string]encoder.Encoder
|
|
|
|
DisableReplaceEnvVars bool
|
2019-05-30 23:11:13 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
|
}
|
|
|
|
}
|
2020-07-06 15:13:35 -04:00
|
|
|
|
|
|
|
// WithDisableReplaceEnvVars disables the environment variable interpolation preprocessor
|
|
|
|
func WithDisableReplaceEnvVars() Option {
|
|
|
|
return func(o *Options) {
|
|
|
|
o.DisableReplaceEnvVars = true
|
|
|
|
}
|
|
|
|
}
|