Skip to content

memlib/confmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

confmap

Configuration mapping on the Go struct based on viper

Example usage

Configuration struct:

type HttpClientConfig struct {
    Url     string `mapstructure:"url"`
    Timeout string `mapstructure:"timeout"`
}

Map parameter from environment variables

Environment variables:

export PREFIX_URL=example.com
export PREFIX_TIMEOUT=200ms

Init code:

var config HttpClientConfig

if err := confmap.MapEnvs("PREFIX", &config); err != nil {
    panic(err)
}

client := NewHttpClient(config)

With Generics:

config, err := confmap.MapEnvsTyped[HttpClientConfig]("PREFIX")
if err != nil {
    panic(err)
}

client := NewHttpClient(config)

Default parameters

type HttpClientConfig struct {
    Url     string `mapstructure:"url"`
    Timeout string `mapstructure:"timeout"`
}

func (c Http) DefaultEnvs() map[string]any {
    return map[string]any{
        "timeout": "1s",
    }
}

About

Configuration mapping on the Go struct

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages