diff options
author | Niall Sheridan <nsheridan@gmail.com> | 2016-09-10 17:40:23 +0100 |
---|---|---|
committer | Niall Sheridan <nsheridan@gmail.com> | 2016-09-10 17:40:23 +0100 |
commit | a30d6403f723765b8f9b7609e7eb3ade0f5434a0 (patch) | |
tree | dfd1197c292fa6fa3bcceae5e135bc8e3991f4c0 /client/config.go | |
parent | d422741d8aab8cd4564141da57e2b98eed3c8a85 (diff) |
Make client a top-level package for consistency
Diffstat (limited to 'client/config.go')
-rw-r--r-- | client/config.go | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/client/config.go b/client/config.go new file mode 100644 index 0000000..1cc9401 --- /dev/null +++ b/client/config.go @@ -0,0 +1,38 @@ +package client + +import ( + "github.com/spf13/pflag" + "github.com/spf13/viper" +) + +// Config holds the client configuration. +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) +} + +// ReadConfig reads the client configuration from a file into a Config struct. +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 +} |