Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
forked fromkkyr/fig

A minimalist Go configuration library

License

NotificationsYou must be signed in to change notification settings

yaraskm/fig

 
 

Repository files navigation

fig

godocsemver taggo report cardcoverage statuslicense

fig

fig is a tiny library for loading an application's config file and its environment into a Go struct. Individual fields can have default values defined or be marked as required.

Why fig?

  • Define yourconfiguration,validations anddefaults in a single location
  • Optionallyload from the environment as well
  • Only3 external dependencies
  • Full support fortime.Time,time.Duration &regexp.Regexp
  • Tiny API
  • Decoders for.yaml,.json and.toml files

Getting Started

$ go get -d github.com/kkyr/fig

Define your config file:

# config.yamlbuild:"2020-01-09T12:30:00Z"server:ports:      -8080cleanup:1hlogger:level:"warn"trace:true

Define your struct along withvalidations ordefaults:

package mainimport ("fmt""github.com/kkyr/fig")typeConfigstruct {Build  time.Time`fig:"build" validate:"required"`Serverstruct {Hoststring`fig:"host" default:"127.0.0.1"`Ports   []int`fig:"ports" default:"[80,443]"`Cleanup time.Duration`fig:"cleanup" default:"30m"`  }Loggerstruct {Levelstring`fig:"level" default:"info"`Pattern*regexp.Regexp`fig:"pattern" default:".*"`Tracebool`fig:"trace"`  }}funcmain() {varcfgConfigerr:=fig.Load(&cfg)// handle your errfmt.Printf("%+v\n",cfg)// Output: {Build:2019-12-25 00:00:00 +0000 UTC Server:{Host:127.0.0.1 Ports:[8080] Cleanup:1h0m0s} Logger:{Level:warn Pattern:.* Trace:true}}}

If a field is not set and is marked asrequired then an error is returned. If adefault value is defined instead then that value is used to populate the field.

Fig searches for a file namedconfig.yaml in the directory it is run from. Change the lookup behaviour by passing additional parameters toLoad():

fig.Load(&cfg,fig.File("settings.json"),fig.Dirs(".","/etc/myapp","/home/user/myapp"),)// searches for ./settings.json, /etc/myapp/settings.json, /home/user/myapp/settings.json

Environment

Need to additionally fill fields from the environment? It's as simple as:

fig.Load(&cfg,fig.UseEnv("MYAPP"))

Usage

See usageexamples.

Documentation

Seego.dev for detailed documentation.

Contributing

PRs are welcome! Please explain your motivation for the change in your PR and ensure your change is properly tested and documented.

About

A minimalist Go configuration library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go99.5%
  • Makefile0.5%

[8]ページ先頭

©2009-2025 Movatter.jp