Skip to content

Load config into go struct from shell environment and docker/kubernetes secrets.

License

Notifications You must be signed in to change notification settings

hack-fan/config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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_CASE
  • Secret will use snake_case

Tags

  • default set default value
  • env custom shell env variable names
  • secret custom secret file name
  • required set attr as required

About

Load config into go struct from shell environment and docker/kubernetes secrets.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages