Description
Quick and easy way to load config files based on a simple set of rules.
Project inspired by https://github.com/lorenwest/node-config
txgruppi-config alternatives and similar packages
Based on the "Configuration" category.
Alternatively, view txgruppi-config alternatives based on common mentions on social networks and blogs.
-
kelseyhightower/envconfig
Golang library for managing configuration data from environment variables -
env
A simple and zero-dependencies library to parse environment variables into structs. -
koanf
Simple, lightweight, extensible, configuration management library for Go. Support for JSON, TOML, YAML, env, command line, file, S3 etc. Alternative to viper. -
cleanenv
✨Clean and minimalistic environment configuration reader for Golang -
konfig
Composable, observable and performant config handling for Go for the distributed processing era -
confita
Load configuration in cascade from multiple backends into a struct -
gookit/config
📝 Go configuration manage(load,get,set,export). support JSON, YAML, TOML, Properties, INI, HCL, ENV and Flags. Multi file load, data override merge, parse ENV var. Go应用配置加载管理,支持多种格式,多文件加载,远程文件加载,支持数据合并,解析环境变量名 -
GoLobby/Config
A lightweight yet powerful configuration manager for the Go programming language -
config
JSON or YAML configuration wrapper with convenient access methods. -
gcfg
read INI-style configuration files into Go structs; supports user-defined types and subsections -
envconfig
Small library to read your configuration from environment variables -
goConfig
goconfig uses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file. -
joshbetz/config
🛠 A configuration library for Go that parses environment variables, JSON files, and reloads automatically on SIGHUP. -
configuro
An opinionated configuration loading framework for Containerized and Cloud-Native applications. -
configuration
Library for setting values to structs' fields from env, flags, files or default tag -
configure
Configure is a Go package that gives you easy configuration of your project through redundancy -
hocon
go implementation of lightbend's HOCON configuration library https://github.com/lightbend/config -
uConfig
Lightweight, zero-dependency, and extendable configuration management library for Go -
go-up
go-up! A simple configuration library with recursive placeholders resolution and no magic. -
go-ssm-config
Go utility for loading configuration parameters from AWS SSM (Parameter Store) -
CONFLATE
Library providing routines to merge and validate JSON, YAML and/or TOML files -
Genv
Genv is a library for Go (golang) that makes it easy to read and use environment variables in your projects. It also allows environment variables to be loaded from the .env file. -
subVars
Substitute environment variables from command line for template driven configuration files. -
swap
Instantiate/configure structs recursively, based on build environment. (YAML, TOML, JSON and env). -
nasermirzaei89/env
Golang Get Environment Variables Package
Build time-series-based applications quickly and at scale.
Do you think we are missing an alternative of txgruppi-config or a related project?
README
config
Quick and easy way to load config files based on a simple set of rules.
Project inspired by https://github.com/lorenwest/node-config
Important stuff
Supported files
Before you can load any file you must register parsers using Loader.RegisterParser
.
Each parser has a list of supported extensions that will be used to find files to load.
Config folder
By default the load will try to find the files based on the environment variable name given to it (defaults to CONFIG_DIR
). If the variable name is empty or the variable value is empty, it will look for files in ./config
.
File load order
default.{ext}
{deployment}.{ext}
{hostname}.{ext}
{hostname}-{deployment}.{ext}
local.{ext}
local-{deployment}.{ext}
Where
{ext}
is one of the registered extensions.{deployment}
is the deployment name, from the$ENV
environment variable. (No default value, ignored if empty){hostname}
is the value returned fromos.Hostname()
with no changes. (No default value, ignored if empty)
Installation
go get -u github.com/txgruppi/config
Example
package main
import (
"fmt"
"log"
"github.com/txgruppi/config"
"github.com/txgruppi/config/parsers/json"
)
type Config struct {
Server struct {
Bind string `json:"bind"`
Port int `json:"port"`
} `json:"server"`
}
func main() {
loader := NewLoader()
if err := loader.RegisterParser(json.NewParser()); err != nil {
log.Fatal(err)
}
var config Config
info, err := loader.Load(&config)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Looked for files in: %s\n", info.ConfigFolder)
fmt.Printf("Loaded files: %v\n", info.LoadedFiles)
fmt.Printf("Loaded config: %v\n", config)
}