Documentation
¶
Index ¶
- Constants
- Variables
- func AddConfigPath(in string)
- func AddRemoteProvider(provider, endpoint, path string) error
- func AddSecureRemoteProvider(provider, endpoint, path, secretkeyring string) error
- func AllKeys() []string
- func AllSettings() map[string]interface{}
- func AutomaticEnv()
- func BindEnv(input ...string) error
- func BindFlagValue(key string, flag FlagValue) error
- func BindFlagValues(flags FlagValueSet) error
- func BindPFlag(key string, flag *pflag.Flag) error
- func BindPFlags(flags *pflag.FlagSet) error
- func ClearConfigSettings()
- func ClearPFlag(key string)
- func ConfigFileUsed() string
- func Debug()
- func Filesys() afero.Fs
- func Get(key string) interface{}
- func GetBool(key string) bool
- func GetDuration(key string) time.Duration
- func GetFloat64(key string) float64
- func GetInt(key string) int
- func GetInt64(key string) int64
- func GetSizeInBytes(key string) uint
- func GetString(key string) string
- func GetStringMap(key string) map[string]interface{}
- func GetStringMapString(key string) map[string]string
- func GetStringMapStringSlice(key string) map[string][]string
- func GetStringSlice(key string) []string
- func GetTime(key string) time.Time
- func InConfig(key string) bool
- func IsSet(key string) bool
- func MergeConfig(in io.Reader) error
- func MergeInConfig() error
- func OnConfigChange(run func(in fsnotify.Event))
- func ReadConfig(in io.Reader) error
- func ReadInConfig() error
- func ReadRemoteConfig() error
- func RegisterAlias(alias string, key string)
- func Reset()
- func Set(key string, value interface{})
- func SetConfigFile(in string)
- func SetConfigName(in string)
- func SetConfigType(in string)
- func SetDefault(key string, value interface{})
- func SetDesc(key string, desc string, useLevel UseLevel, useScope int)
- func SetEnvKeyReplacer(r *strings.Replacer)
- func SetEnvPrefix(in string)
- func SetFilesys(fs afero.Fs)
- func SetFs(fs afero.Fs)
- func SetPFlags(flags *pflag.FlagSet) (err error)
- func SetTypeByDefaultValue(enable bool)
- func Unmarshal(rawVal interface{}) error
- func UnmarshalKey(key string, rawVal interface{}) error
- func WatchConfig()
- func WatchRemoteConfig() error
- type ConfigFileNotFoundError
- type ConfigParseError
- type FlagValue
- type FlagValueSet
- type RemoteConfigError
- type RemoteProvider
- type UnsupportedConfigError
- type UnsupportedRemoteProviderError
- type UseLevel
- type Viper
- func (v *Viper) AddConfigPath(in string)
- func (v *Viper) AddRemoteProvider(provider, endpoint, path string) error
- func (v *Viper) AddSecureRemoteProvider(provider, endpoint, path, secretkeyring string) error
- func (v *Viper) AllKeys() []string
- func (v *Viper) AllSettings() map[string]interface{}
- func (v *Viper) AutomaticEnv()
- func (v *Viper) BindEnv(input ...string) error
- func (v *Viper) BindFlagValue(key string, flag FlagValue) error
- func (v *Viper) BindFlagValues(flags FlagValueSet) (err error)
- func (v *Viper) BindPFlag(key string, flag *pflag.Flag) error
- func (v *Viper) BindPFlags(flags *pflag.FlagSet) error
- func (v *Viper) ClearConfigSettings()
- func (v *Viper) ClearPFlag(key string)
- func (v *Viper) ConfigFileUsed() string
- func (v *Viper) Debug()
- func (v *Viper) Desc(key string) (string, UseLevel, int)
- func (v *Viper) Get(key string) interface{}
- func (v *Viper) GetBool(key string) bool
- func (v *Viper) GetDuration(key string) time.Duration
- func (v *Viper) GetFloat64(key string) float64
- func (v *Viper) GetInt(key string) int
- func (v *Viper) GetInt64(key string) int64
- func (v *Viper) GetSizeInBytes(key string) uint
- func (v *Viper) GetString(key string) string
- func (v *Viper) GetStringMap(key string) map[string]interface{}
- func (v *Viper) GetStringMapString(key string) map[string]string
- func (v *Viper) GetStringMapStringSlice(key string) map[string][]string
- func (v *Viper) GetStringSlice(key string) []string
- func (v *Viper) GetTime(key string) time.Time
- func (v *Viper) InConfig(key string) bool
- func (v *Viper) IsSet(key string) bool
- func (v *Viper) MergeConfig(in io.Reader) error
- func (v *Viper) MergeInConfig() error
- func (v *Viper) OnConfigChange(run func(in fsnotify.Event))
- func (v *Viper) ReadConfig(in io.Reader) error
- func (v *Viper) ReadInConfig() error
- func (v *Viper) ReadRemoteConfig() error
- func (v *Viper) RegisterAlias(alias string, key string)
- func (v *Viper) Set(key string, value interface{})
- func (v *Viper) SetConfigFile(in string)
- func (v *Viper) SetConfigName(in string)
- func (v *Viper) SetConfigType(in string)
- func (v *Viper) SetDefault(key string, value interface{})
- func (v *Viper) SetDesc(key string, desc string, useLevel UseLevel, useScope int)
- func (v *Viper) SetEnvKeyReplacer(r *strings.Replacer)
- func (v *Viper) SetEnvPrefix(in string)
- func (v *Viper) SetFs(fs afero.Fs)
- func (v *Viper) SetPFlags(flags *pflag.FlagSet) (err error)
- func (v *Viper) SetTypeByDefaultValue(enable bool)
- func (v *Viper) String() string
- func (v *Viper) Sub(key string) *Viper
- func (v *Viper) Unmarshal(rawVal interface{}) error
- func (v *Viper) UnmarshalExact(rawVal interface{}) error
- func (v *Viper) UnmarshalKey(key string, rawVal interface{}) error
- func (v *Viper) WatchConfig()
- func (v *Viper) WatchRemoteConfig() error
Constants ¶
const ( AvailCLI = 1 << iota // global has a related CLI option available AvailEnv // global can be set in DVLN_<GLOB> AvailCfgFile // global can be set in dvln cfg file AvailRemote // global can be set in remote cfg mechanism AvailVCSPkg // global can be set on VCS pkg AvailVCSMPkg // global can be set on VCS multi-pkg pkg AvailVCSCodeBasePkg // global can be set on VCS codebase pkg AvailVCSHookPkg // global can be set on VCS hook pkg AvailVCSPluginPkg // global can be set on VCS plugin pkg AvailDefault // global value is coming from default setting ConstGlobal = AvailDefault InternalGlobal = AvailDefault BasicGlobal = AvailEnv | AvailCfgFile | AvailDefault CLIGlobal = AvailCLI | BasicGlobal CLIOnlyGlobal = AvailCLI | AvailDefault VCSGlobal = AvailVCSPkg | AvailVCSMPkg | AvailVCSCodeBasePkg | AvailVCSHookPkg | AvailVCSPluginPkg | AvailDefault BasicVCSGlobal = BasicGlobal | VCSGlobal FullVCSGlobal = CLIGlobal | VCSGlobal BasicVCSCBGlobal = BasicGlobal | AvailVCSCodeBasePkg FullVCSCBGlobal = CLIGlobal | AvailVCSCodeBasePkg )
These fields describe where one can configure a given 'key' (glob variable) from so that the calling tool can control which settings are honored. Of course CLI use/setting of a given variable/key must be configured elsewhere such as via 'cobra' (the 'cli' commander pkg). For 'dvln' needs I've updated the table to also include other ways that variables/keys can be set so if you use this in your own library you can ignore those levels or trim them out. The order of evaluation for config levels is:
Overrides (set via this packages Set() method used after CLI processed) CLI (option given to the command line tool pushed into here via Set()) Env (in the users env) Local Config File (in the users tool config file) Remote Key/Val (via a remote key/value store or config) Pkg Singleton Settings (dvln: on an individual "leaf" VCS package) Multi-Package (MPkg) Settings (dvln: on a multi-pkg VCS package) CodeBase Settings (dvln: on a codebase definition VCS package) Default Settings (viper: set via SetDefault(...)
Note that if keys (globals/variables) have augmented description data added such as where they can be set, at which level(s), then settings at that level for that variable should not be honored (only valid levels honored). This is not fully implemented except for the 'dvln:' focused levels above.
Feature: the VCS Pkg/Codebase related settings in terms of where keys (globs)
can be set from, but the builtin 'viper' options don't yet honor these and could be modified to honor them coming up (ie: this way one can use this as a "globals" mechanism and avoid chances of clients overriding some settings via env or config file settings)
Variables ¶
var APIVersionName = "apiver"
APIVersionName is needed for JSON output of the *Viper structure, if no api version is set then the JSON is bogus (defaults to "apiver" as the name of the key being looked for)
var LookName = "look"
LookName is used for the String() method to dump a viper's user focused info (relating to what the DE can set in the env or in a config file) and will be a string set to either "json" or "text" (ie: String() will examine viper settings and get whatever "look" is set to and use that as the look)
var RemoteConfig remoteConfigFactory
RemoteConfig is optional, see the remote package
var SupportedExts = []string{"json", "toml", "yaml", "yml", "properties", "props", "prop", "hcl"}
SupportedExts are universally supported extensions.
var SupportedRemoteProviders = []string{"etcd", "consul"}
SupportedRemoteProviders are universally supported remote providers.
var TerseName = "terse"
TerseName is used to dump brief information about the viper cfg|env, so if "terse" is set as a key and is true then a reduced amount of data will be dumped (note that VerboseName's setting, if set, overrides this)
var UserCfgTypeName = "globs"
UserCfgTypeName is the viper config key that will be a string of either 'cfg' or 'env' to control the String() method returning data about what keys can be set in the config file or what env vars can be used by the user
var VerboseName = "verbose"
VerboseName is used to decide to dump the information verbosely or not, so if "verbose" is set to 'true' (as a viper key) then verbose output is on
Functions ¶
func AddConfigPath ¶
func AddConfigPath(in string)
AddConfigPath adds a path for Viper to search for the config file in. Can be called multiple times to define multiple search paths.
func AddRemoteProvider ¶
AddRemoteProvider adds a remote configuration source. Remote Providers are searched in the order they are added. provider is a string value, "etcd" or "consul" are currently supported. endpoint is the url. etcd requires http://ip:port consul requires ip:port path is the path in the k/v store to retrieve configuration To retrieve a config file called myapp.json from /configs/myapp.json you should set path to /configs and set config name (SetConfigName()) to "myapp"
func AddSecureRemoteProvider ¶
AddSecureRemoteProvider adds a remote configuration source. Secure Remote Providers are searched in the order they are added. provider is a string value, "etcd" or "consul" are currently supported. endpoint is the url. etcd requires http://ip:port consul requires ip:port secretkeyring is the filepath to your openpgp secret keyring. e.g. /etc/secrets/myring.gpg path is the path in the k/v store to retrieve configuration To retrieve a config file called myapp.json from /configs/myapp.json you should set path to /configs and set config name (SetConfigName()) to "myapp" Secure Remote Providers are implemented with github.com/xordataexchange/crypt
func AllKeys ¶
func AllKeys() []string
AllKeys returns all keys holding a value, regardless of where they are set. Nested keys are returned with a v.keyDelim (= ".") separator
func AllSettings ¶
func AllSettings() map[string]interface{}
AllSettings merges all settings and returns them as a map[string]interface{}.
func BindEnv ¶
BindEnv binds a Viper key to a ENV variable. ENV variables are case sensitive. If only a key is provided, it will use the env key matching the key, uppercased. EnvPrefix will be used when set when env name is not provided.
func BindFlagValue ¶
BindFlagValue binds a specific key to a FlagValue. Example(where serverCmd is a Cobra instance):
serverCmd.Flags().Int("port", 1138, "Port to run Application server on") Viper.BindFlagValue("port", serverCmd.Flags().Lookup("port"))
func BindFlagValues ¶
func BindFlagValues(flags FlagValueSet) error
BindFlagValues binds a full FlagValue set to the configuration, using each flag's long name as the config key.
func BindPFlag ¶
BindPFlag binds a specific key to a pflag (as used by cobra). Example (where serverCmd is a Cobra instance):
func BindPFlags ¶
BindPFlags binds a full flag set to the configuration, using each flag's long name as the config key.
func ClearConfigSettings ¶
func ClearConfigSettings()
ClearConfigSettings clears out any previously added config file paths and names from previous runs (if run under, say, a test hardness) and allows the next run to cleanly re-determine what config file to read in
func ClearPFlag ¶
func ClearPFlag(key string)
ClearPFlag is a bit of a hack, used to be replace but was having issues so now it's a simple mechanism to clear viper's knowledge of a command line flag so that an override can override a command line setting (the way viper works is that if pflags has a flag set and a Set() has been called it'll actually prefer the pflag setting, not the override setting). If you want it to prefer the Set() override setting you can use this, typically only used if one is using SetPflags() above.
func ConfigFileUsed ¶
func ConfigFileUsed() string
ConfigFileUsed returns the file used to populate the config registry
func Filesys ¶
Filesys returns current filesystem used for message writing, can be nil if it hasn't been set yet
func Get ¶
func Get(key string) interface{}
Get can retrieve any value given the key to use. Get has the behavior of returning the value associated with the first place from where it is set. Viper will check in the following order: override, flag, env, config file, key/value store, default
Get returns an interface. For a specific value use one of the Get____ methods.
func GetDuration ¶
GetDuration returns the value associated with the key as a duration.
func GetFloat64 ¶
GetFloat64 returns the value associated with the key as a float64.
func GetSizeInBytes ¶
GetSizeInBytes returns the size of the value associated with the given key in bytes.
func GetStringMap ¶
GetStringMap returns the value associated with the key as a map of interfaces.
func GetStringMapString ¶
GetStringMapString returns the value associated with the key as a map of strings.
func GetStringMapStringSlice ¶
GetStringMapStringSlice returns the value associated with the key as a map to a slice of strings.
func GetStringSlice ¶
GetStringSlice returns the value associated with the key as a slice of strings.
func MergeConfig ¶
MergeConfig merges a new configuration with an existing config.
func MergeInConfig ¶
func MergeInConfig() error
MergeInConfig merges a new configuration with an existing config.
func OnConfigChange ¶
func ReadConfig ¶
ReadConfig will read a configuration file, setting existing keys to nil if the key does not exist in the file.
func ReadInConfig ¶
func ReadInConfig() error
ReadInConfig will discover and load the configuration file from disk and key/value stores, searching in one of the defined paths.
func ReadRemoteConfig ¶
func ReadRemoteConfig() error
ReadRemoteConfig attempts to get configuration from a remote source and read it in the remote configuration registry.
func RegisterAlias ¶
RegisterAlias is a way to provide another accessor for the same key. This enables one to change a name without breaking the application
func Reset ¶
func Reset()
Reset is intended for testing, will reset all to default settings. In the public interface for the viper package so applications can use it in their testing as well.
func Set ¶
func Set(key string, value interface{})
Set sets the value for the key in the override regiser. Will be used instead of values obtained via flags, config file, ENV, default, or key/value store.
func SetConfigFile ¶
func SetConfigFile(in string)
SetConfigFile explicitly defines the path, name and extension of the config file Viper will use this and not check any of the config paths
func SetConfigName ¶
func SetConfigName(in string)
SetConfigName sets name for the config file. Does not include extension.
func SetConfigType ¶
func SetConfigType(in string)
SetConfigType sets the type of the configuration returned by the remote source, e.g. "json".
func SetDefault ¶
func SetDefault(key string, value interface{})
SetDefault sets the default value for this key. Default only used when no value is provided by the user via flag, config or ENV.
func SetEnvKeyReplacer ¶
SetEnvKeyReplacer sets the strings.Replacer on the viper object Useful for mapping an environmental variable to a key that does not match it.
func SetEnvPrefix ¶
func SetEnvPrefix(in string)
SetEnvPrefix defines a prefix that ENVIRONMENT variables will use. E.g. if your prefix is "spf", the env registry will look for env. variables that start with "SPF_"
func SetFilesys ¶
SetFilesys will set the filesystem wrapper up to write to the real filesystem or a virtual filesystem if preferred (see afero). If the filesys that is passed in is 'nil' it causes it to "bootstrap" the OS filesystem if none has yet been set, if one is set it ignores nil calls.
func SetPFlags ¶
SetPFlags informs viper about CLI flags so it knows what key settings come from the command line. It can be used when viper/cobra/pflags are being used in concert *AND* when one wishes to pre-set all defaults manually (if you do not wish to do that instead use BindPFlags and not SetPFlags). The difference is that this visits all flags and *only* if they are "Changed" (from the CLI) does it identify them as "active" pflags (vs BindPFlags which sets every flag in existence into v.pflags[] and uses SetDefault() so vipers default value comes from the flags default value setting... to use SetPFlags you should have manually set the starting default value for each flag). So here we only put the used CLI's in v.pflags[] and we only use v.Set() to push CLI used args in at the v.override[] level (avoids having the app do these Set's). Goal: this can tie in later w/support for no args to strings/ints/bools where the default would be to take the *options* defined default (thereby putting it into play) over the already pre-set default (if/when desired only)
func SetTypeByDefaultValue ¶
func SetTypeByDefaultValue(enable bool)
SetTypeByDefaultValue enables or disables the inference of a key value's type when the Get function is used based upon a key's default value as opposed to the value returned based on the normal fetch logic.
For example, if a key has a default value of []string{} and the same key is set via an environment variable to "a b c", a call to the Get function would return a string slice for the key if the key's type is inferred by the default value and the Get function would return:
[]string {"a", "b", "c"}
Otherwise the Get function would return:
"a b c"
func Unmarshal ¶
func Unmarshal(rawVal interface{}) error
Unmarshal unmarshals the config into a Struct. Make sure that the tags on the fields of the structure are properly set.
func UnmarshalKey ¶
UnmarshalKey takes a single key and unmarshals it into a Struct.
func WatchConfig ¶
func WatchConfig()
WatchConfig monitors your config file for changes, if any seen then it is re-read. Note that this capability uses fsnotify and is not compatible with the afero filesystem mechanism at this point (so beware).
func WatchRemoteConfig ¶
func WatchRemoteConfig() error
Types ¶
type ConfigFileNotFoundError ¶
type ConfigFileNotFoundError struct {
// contains filtered or unexported fields
}
ConfigFileNotFoundError denotes failing to find configuration file.
func (ConfigFileNotFoundError) Error ¶
func (fnfe ConfigFileNotFoundError) Error() string
Error returns the formatted configuration error.
type ConfigParseError ¶
type ConfigParseError struct {
// contains filtered or unexported fields
}
ConfigParseError denotes failing to parse configuration file.
func (ConfigParseError) Error ¶
func (pe ConfigParseError) Error() string
Error returns the formatted configuration error.
type FlagValue ¶
type FlagValue interface { HasChanged() bool Name() string ValueString() string ValueType() string }
FlagValue is an interface that users can implement to bind different flags to viper.
type FlagValueSet ¶
type FlagValueSet interface {
VisitAll(fn func(FlagValue))
}
FlagValueSet is an interface that users can implement to bind a set of flags to viper.
type RemoteConfigError ¶
type RemoteConfigError string
RemoteConfigError denotes encountering an error while trying to pull the configuration from the remote provider.
func (RemoteConfigError) Error ¶
func (rce RemoteConfigError) Error() string
Error returns the formatted remote provider error
type RemoteProvider ¶
type RemoteProvider interface { Provider() string Endpoint() string Path() string SecretKeyring() string }
RemoteProvider stores the configuration necessary to connect to a remote key/value store. Optional secretKeyring to unencrypt encrypted values can be provided.
type UnsupportedConfigError ¶
type UnsupportedConfigError string
UnsupportedConfigError denotes encountering an unsupported configuration filetype.
func (UnsupportedConfigError) Error ¶
func (str UnsupportedConfigError) Error() string
Error returns the formatted configuration error.
type UnsupportedRemoteProviderError ¶
type UnsupportedRemoteProviderError string
UnsupportedRemoteProviderError denotes encountering an unsupported remote provider. Currently only etcd and Consul are supported.
func (UnsupportedRemoteProviderError) Error ¶
func (str UnsupportedRemoteProviderError) Error() string
Error returns the formatted remote provider error.
type UseLevel ¶
type UseLevel int
UseLevel is a type that indicates the level of user should be "at" to use a given config key (variable)... meaning they likely don't want to be setting or playing with it until they reach a given level (or maybe never at all if it is an internal use key/variable setting)
const ( NoviceUser UseLevel = iota // for novice level users StandardUser // for "normal" level users ExpertUser // for expert level users AdminUser // for admin level users InternalUse // for internal use primarily, hides it RestrictedUse // for any (future) restricted global UnknownUseLevel // in case we have no setting )
UseLevels available, just integers at this point
func Desc ¶
Desc returns the description, if any, for the given key, if no desc then "" for the description, UnknownUseLevel for UseLevel and 0 for where it can be set from (ie: nowhere)
func UseLevelString2UseLevel ¶
UseLevelString2UseLevel takes the string representation of a user/use level and returns the UseLevel (Go type) that maps to that string, if mapping fails the unknown use level comes back for now
type Viper ¶
type Viper struct {
// contains filtered or unexported fields
}
Viper is a prioritized configuration registry. It maintains a set of configuration sources, fetches values to populate those, and provides them according to the source's priority. The priority of the sources is the following: 1. overrides 2. flags 3. env. variables 4. config file 5. key/value store 5 1/2. the dvln codebase and pkg settings fall into this area 6. defaults
For example, if values from the following sources were loaded:
Defaults : { "secret": "", "user": "default", "endpoint": "https://localhost" } Config : { "user": "root" "secret": "defaultsecret" } Env : { "secret": "somesecretkey" }
The resulting config will have the following values:
{ "secret": "somesecretkey", "user": "root", "endpoint": "https://localhost" }
func GetSingleton ¶
func GetSingleton() *Viper
GetSingleton allows one to grab the package global viper instance
func (*Viper) AddConfigPath ¶
AddConfigPath is same as like named singleton (but drives off given *Viper)
func (*Viper) AddRemoteProvider ¶
AddRemoteProvider same as like named singleton (but drives off given *Viper)
func (*Viper) AddSecureRemoteProvider ¶
AddSecureRemoteProvider is same as like named singleton (but drives off given *Viper)
func (*Viper) AllSettings ¶
AllSettings is same as like named singleton (but drives off given *Viper)
func (*Viper) AutomaticEnv ¶
func (v *Viper) AutomaticEnv()
AutomaticEnv is same as like named singleton (but drives off given *Viper)
func (*Viper) BindFlagValues ¶
func (v *Viper) BindFlagValues(flags FlagValueSet) (err error)
func (*Viper) BindPFlags ¶
BindPFlags is same as like named singleton (but drives off given *Viper)
func (*Viper) ClearConfigSettings ¶
func (v *Viper) ClearConfigSettings()
ClearConfigSettings is same as like named singleton (but drives off given *Viper)
func (*Viper) ClearPFlag ¶
ClearPFlag is same as like named singleton (but drives off given *Viper)
func (*Viper) ConfigFileUsed ¶
func (*Viper) Debug ¶
func (v *Viper) Debug()
Debug is same as like named singleton (but drives off given *Viper)
func (*Viper) GetDuration ¶
GetDuration is same as like named singleton (but drives off given *Viper)
func (*Viper) GetFloat64 ¶
GetFloat64 is same as like named singleton (but drives off given *Viper)
func (*Viper) GetSizeInBytes ¶
GetSizeInBytes is same as like named singleton (but drives off given *Viper)
func (*Viper) GetStringMap ¶
GetStringMap is same as like named singleton (but drives off given *Viper)
func (*Viper) GetStringMapString ¶
GetStringMapString is same as like named singleton (but drives off given *Viper)
func (*Viper) GetStringMapStringSlice ¶
func (*Viper) GetStringSlice ¶
GetStringSlice is same as like named singleton (but drives off given *Viper)
func (*Viper) MergeInConfig ¶
func (*Viper) OnConfigChange ¶
func (*Viper) ReadInConfig ¶
ReadInConfig is same as like named singleton (but drives off given *Viper)
func (*Viper) ReadRemoteConfig ¶
ReadRemoteConfig is same as like named singleton (but drives off given *Viper)
func (*Viper) RegisterAlias ¶
RegisterAlias is same as like named singleton (but drives off given *Viper)
func (*Viper) SetConfigFile ¶
SetConfigFile is same as like named singleton (but drives off given *Viper)
func (*Viper) SetConfigName ¶
SetConfigName is same as like named singleton (but drives off given *Viper)
func (*Viper) SetConfigType ¶
SetConfigType is same as like named singleton (but drives off given *Viper)
func (*Viper) SetDefault ¶
SetDefault is same as like named singleton (but drives off given *Viper)
func (*Viper) SetEnvKeyReplacer ¶
SetEnvKeyReplacer is same as like named singleton (but drives off given *Viper)
func (*Viper) SetEnvPrefix ¶
SetEnvPrefix is same as like named singleton method (drives off given *Viper)
func (*Viper) SetTypeByDefaultValue ¶
func (*Viper) String ¶
String will return a string with available config settings through either the env or via the config file so the user can see: - what settings are available, what is their current val (at least) - optionally show description and a user expertise level recommended This method leverages viper itself to decide what the look/format of the string is (text or json) and how to determine if verbose or terse mode is active via the exported package globs: - LookName defaults to "look" as the key to look for "text|json" - TerseName defaults to "terse" as the key, if true then terse - VerboseName defaults to "verbose" as the key, if true then verbose (overrides terse) - APIVersionName defaults to "apiver" and is required for JSON formatted output
func (*Viper) UnmarshalExact ¶
UnmarshalExact unmarshals the config into a Struct, erroring if a field is nonexistent in the destination struct.
func (*Viper) UnmarshalKey ¶
func (*Viper) WatchConfig ¶
func (v *Viper) WatchConfig()