Skip to content

Latest commit

 

History

History
57 lines (45 loc) · 1.32 KB

README.md

File metadata and controls

57 lines (45 loc) · 1.32 KB

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