diff options
Diffstat (limited to 'cmd/cashier/client/config.go')
-rw-r--r-- | cmd/cashier/client/config.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/cmd/cashier/client/config.go b/cmd/cashier/client/config.go new file mode 100644 index 0000000..d4defef --- /dev/null +++ b/cmd/cashier/client/config.go @@ -0,0 +1,36 @@ +package client + +import ( + "github.com/spf13/pflag" + "github.com/spf13/viper" +) + +type Config struct { + CA string `mapstructure:"ca"` + Keytype string `mapstructure:"key_type"` + Keysize int `mapstructure:"key_size"` + Validity string `mapstructure:"validity"` + ValidateTLSCertificate bool `mapstructure:"validate_tls_certificate"` +} + +func setDefaults() { + viper.BindPFlag("ca", pflag.Lookup("ca")) + viper.BindPFlag("key_type", pflag.Lookup("key_type")) + viper.BindPFlag("key_size", pflag.Lookup("key_size")) + viper.BindPFlag("validity", pflag.Lookup("validity")) + viper.SetDefault("validateTLSCertificate", true) +} + +func ReadConfig(path string) (*Config, error) { + setDefaults() + viper.SetConfigFile(path) + viper.SetConfigType("hcl") + if err := viper.ReadInConfig(); err != nil { + return nil, err + } + c := &Config{} + if err := viper.Unmarshal(c); err != nil { + return nil, err + } + return c, nil +} |