Documentation ¶
Index ¶
- Constants
- func AddConfigFlag(cmd *cobra.Command)
- func AddVerbosityFlag(cmd *cobra.Command)
- func Compress(data []byte) ([]byte, error)
- func Decompress(data []byte) ([]byte, error)
- func DefaultInitializer(cfg interface{}, cmd *cobra.Command, name string) error
- func FirstOrEmpty(slice []string) string
- func Read(cfg interface{}, flags *pflag.FlagSet, file string, ...) error
- func ReadFromEnv(cfg interface{}) error
- func ReadFromFile(cfg interface{}, file string, defaultCfg DefaultFileConfig) error
- func ReadFromFlags(cfg interface{}, flags *pflag.FlagSet) error
- func SetupLogging(out io.Writer, level string) error
- func ToMap(slice []string) map[string]string
- func Unescape(s string) string
- func Unique(stringSlice []string) []string
- type DefaultFileConfig
- type Setter
Constants ¶
const ( // Name of the environment variable or a list of names TagEnv = "env" // Default value TagEnvDefault = "env-default" // Flag name TagFlagName = "flag" // Custom list and map separator TagEnvSeparator = "env-separator" // Flag to mark a field as required TagEnvRequired = "env-required" // Flag to specify prefix for structure fields TagEnvPrefix = "env-prefix" )
Supported tags
const ( Verbosity = "verbosity" Config = "config" )
const (
// DefaultSeparator is a default list and map separator character
DefaultSeparator = ","
)
Variables ¶
This section is empty.
Functions ¶
func AddConfigFlag ¶
func AddVerbosityFlag ¶
func Decompress ¶
func DefaultInitializer ¶
DefaultInitializer loads the config and initializes the logging. This assumes that there are "config" and "verbosity" flags present on the cobra-command.
func FirstOrEmpty ¶
FirstOrEmpty returns the first string from the slice.
func Read ¶
func Read(cfg interface{}, flags *pflag.FlagSet, file string, defaultCfg DefaultFileConfig) error
Read reads configuration from a file, environment variables and cmd-flags, parses them depending on tags in structure provided. Then it reads and parses
Example:
type ConfigDatabase struct { Port string `flag:"port" yaml:"port" env:"PORT" env-default:"5432"` Host string `flag:"host" yaml:"host" env:"HOST" env-default:"localhost"` Name string `flag:"name" yaml:"name" env:"NAME" env-default:"postgres"` User string `flag:"user" yaml:"user" env:"USER" env-default:"user"` Password string `flag:"password" yaml:"password" env:"PASSWORD"` } var cfg ConfigDatabase cmd.Flags().Int32("port", 5432, "Server-Port") ... err := config.Read(&cfg, cmd.Flags(), "config.yml", , DefaultFileConfig{}) if err != nil { ... }
func ReadFromEnv ¶
func ReadFromEnv(cfg interface{}) error
ReadFromEnv reads configuration from environment variables, parses them depending on tags in structure provided. Then it reads and parses
Example:
type ConfigDatabase struct { Port string `env:"PORT" env-default:"5432"` Host string `env:"HOST" env-default:"localhost"` Name string `env:"NAME" env-default:"postgres"` User string `env:"USER" env-default:"user"` Password string `env:"PASSWORD"` } var cfg ConfigDatabase err := config.ReadFromEnv(&cfg) if err != nil { ... }
func ReadFromFile ¶
func ReadFromFile(cfg interface{}, file string, defaultCfg DefaultFileConfig) error
ReadFromFile reads configuration from a file and environment variables, parses them depending on tags in structure provided. Then it reads and parses
Example:
type ConfigDatabase struct { Port string `yaml:"port" env:"PORT" env-default:"5432"` Host string `yaml:"host" env:"HOST" env-default:"localhost"` Name string `yaml:"name" env:"NAME" env-default:"postgres"` User string `yaml:"user" env:"USER" env-default:"user"` Password string `yaml:"password" env:"PASSWORD"` } var cfg ConfigDatabase err := config.ReadFromFile(&cfg, "config.yml", DefaultFileConfig{}) if err != nil { ... }
func ReadFromFlags ¶
ReadFromFlags reads configuration from environment variables and cmd-flags, parses them depending on tags in structure provided. Then it reads and parses
Example:
type ConfigDatabase struct { Port string `flag:"port" env:"PORT" env-default:"5432"` Host string `flag:"host" env:"HOST" env-default:"localhost"` Name string `flag:"name" env:"NAME" env-default:"postgres"` User string `flag:"user" env:"USER" env-default:"user"` Password string `flag:"password" env:"PASSWORD"` } var cfg ConfigDatabase cmd.Flags().Int32("port", 5432, "Server-Port") ... err := config.ReadFromFlags(&cfg, cmd.Flags()) if err != nil { ... }
func SetupLogging ¶
SetupLogging set the log output as the log level
Types ¶
type DefaultFileConfig ¶
type Setter ¶
Setter is an interface for a custom value setter.
To implement a custom value setter you need to add a SetValue function to your type that will receive a string raw value:
type MyField string func (f *MyField) SetValue(s string) error { if s == "" { return fmt.Errorf("field value can't be empty") } *f = MyField("my field is: " + s) return nil }