Skip to content

wiggin77/cfg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0cbee5e · Jan 18, 2024

History

43 Commits
Jan 18, 2024
Jul 15, 2018
Jul 24, 2019
Feb 2, 2019
Jul 14, 2018
Jul 14, 2018
Jan 18, 2024
Jul 24, 2019
Jul 24, 2019
Jul 24, 2019
Jul 24, 2019
Jul 24, 2019
Sep 6, 2018
Jul 24, 2019
Jul 24, 2019
Jul 24, 2019
Jul 24, 2019
Jul 24, 2019

Repository files navigation

cfg

GoDoc Build Status

Go package for app configuration. Supports chained configuration sources for multiple levels of defaults. Includes APIs for loading Linux style configuration files (name/value pairs) or INI files, map based properties, or easily create new configuration sources (e.g. load from database).

Supports monitoring configuration sources for changes, hot loading properties, and notifying listeners of changes.

Usage

config := &cfg.Config{}
defer config.Shutdown() // stops monitoring

// load file via filespec string, os.File
src, err := cfg.NewSrcFileFromFilespec("./myfile.conf")
if err != nil {
    return err
}
// add src to top of chain, meaning first searched
config.PrependSource(src)

// fetch prop 'retries', default to 3 if not found
val := config.Int("retries", 3)

See example for more complete example, including listening for configuration changes.

Config API parses the following data types:

type method example property values
string Config.String test, ""
int Config.Int -1, 77, 0
int64 Config.Int64 -9223372036854775, 372036854775808
float64 Config.Float64 -77.3456, 95642331.1
bool Config.Bool T,t,true,True,1,0,False,false,f,F
time.Duration Config.Duration "10ms", "2 hours", "5 min" *

* Units of measure supported: ms, sec, min, hour, day, week, year.