modulepackage
0.0.0-20200528030741-0a9be90586b6
Repository: https://github.com/hack-fan/config.git
Documentation: pkg.go.dev
# README
Config Loader for Golang
Load config into go struct from shell environment and docker/kubernetes secrets.
Install
go get github.com/hack-fan/config
Features
- Load from shell environment variables
- Load from Docker/Kubernetes secrets
- Default values support
- Required check support
- Simple and easy to use, no other features
Load Order
Default
-> ENV
-> Secret
-> Value exists in struct
Right side will overwrite left side.
Quick Start
package main
import (
"fmt"
"github.com/hack-fan/config"
)
type Settings struct {
AppName string `default:"app"` // env APP_NAME will overwrite default value
DB struct {
Name string
User string `required:"true"`
Password string `secret:"mysql_db_password"` // default secret name is 'db_password',change it use tag
Port int `default:"3306" env:"MYSQL_DB_PORT"` // default env name is 'DB_PORT',change it use tag
}
}
func main() {
var settings = new(Settings)
config.MustLoad(settings)
fmt.Printf("%+v",settings)
}
Name Conversion
ENV
will use ALL_CAP_SNAKE_CASESecret
will use snake_case
Tags
default
set default valueenv
custom shell env variable namessecret
custom secret file namerequired
set attr as required
# Functions
Load config to `dst` struct pointer from shell env variables and docker secrets.
LoadEnv load config to `dst` struct pointer from shell env variables only.
LoadEnvAndDockerSecret load config to `dst` struct pointer from shell env variables and docker secrets.
LoadEnvAndKubernetesSecret load config to `dst` struct pointer from shell env variables and kubernetes secrets.
LoadEnvAndSecret load config to `dst` struct pointer from shell env variables and container secrets.
MustLoad load config to `dst` struct pointer from shell env variables and docker secrets.