Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ian-kent/gofigure
Go configuration made easy!
https://github.com/ian-kent/gofigure
Last synced: 10 days ago
JSON representation
Go configuration made easy!
- Host: GitHub
- URL: https://github.com/ian-kent/gofigure
- Owner: ian-kent
- License: mit
- Created: 2014-11-25T00:12:40.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2019-09-15T00:17:39.000Z (about 5 years ago)
- Last Synced: 2024-10-25T04:09:46.820Z (11 days ago)
- Language: Go
- Homepage:
- Size: 33.2 KB
- Stars: 68
- Watchers: 6
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-go - gofigure - Go application configuration made easy. (Configuration / Standard CLI)
- fucking-awesome-go - gofigure - Go application configuration made easy. (Configuration / Standard CLI)
- awesome-go - gofigure - Go application configuration made easy. (Configuration / Standard CLI)
- awesome-go - gofigure - Go application configuration made easy. (Configuration / Standard CLI)
- awesome-go - gofigure - Go configuration made easy! - ★ 55 (Configuration)
- awesome-go-extra - gofigure - 11-25T00:12:40Z|2019-09-15T00:17:39Z| (Configuration / Advanced Console UIs)
- awesome-go-with-stars - gofigure - Go application configuration made easy. (Configuration / Standard CLI)
- awesome-go-plus - gofigure - Go application configuration made easy. (Configuration / Standard CLI)
- awesome-go-plus - gofigure - Go application configuration made easy. (Configuration / Standard CLI)
README
gofigure [![GoDoc](https://godoc.org/github.com/ian-kent/gofigure?status.svg)](https://godoc.org/github.com/ian-kent/gofigure) [![Build Status](https://travis-ci.org/ian-kent/gofigure.svg?branch=master)](https://travis-ci.org/ian-kent/gofigure) [![Coverage Status](https://coveralls.io/repos/ian-kent/gofigure/badge.png?branch=master)](https://coveralls.io/r/ian-kent/gofigure?branch=master)
========Go configuration made easy!
- Just define a struct and call Gofigure
- Supports strings, ints/uints/floats, slices and nested structs
- Supports environment variables and command line flagsRequires Go 1.2+ because of differences in Go's flag package.
### Example
`go get github.com/ian-kent/gofigure`
```go
package mainimport "github.com/ian-kent/gofigure"
type config struct {
gofigure interface{} `envPrefix:"BAR" order:"flag,env"`
RemoteAddr string `env:"REMOTE_ADDR" flag:"remote-addr" flagDesc:"Remote address"`
LocalAddr string `env:"LOCAL_ADDR" flag:"local-addr" flagDesc:"Local address"`
NumCPU int `env:"NUM_CPU" flag:"num-cpu" flagDesc:"Number of CPUs"`
Sources []string `env:"SOURCES" flag:"source" flagDesc:"Source URL (can be provided multiple times)"`
Numbers []int `env:"NUMBERS" flag:"number" flagDesc:"Number (can be provided multiple times)"`
Advanced struct{
MaxBytes int64 `env:"MAX_BYTES" flag:"max-bytes" flagDesc:"Max bytes"`
MaxErrors int64 `env:"MAX_ERRORS" flag:"max-errors" flagDesc:"Max errors"`
}
}func main() {
var cfg config
err := gofigure.Gofigure(&cfg)
if err != nil {
log.Fatal(err)
}
// use cfg
}
```### gofigure field
The gofigure field is used to configure Gofigure.
The `order` tag is used to set configuration source order, e.g.
environment variables first then command line options second.Any field matching `camelCase` format will be parsed into `camel`
and `case`, and passed to the source matching `camel`.For example, the `envPrefix` field is split into `env` and `prefix`,
and the tag value is passed to the environment variable source as
the `prefix` parameter.### Arrays and environment variables
Array support for environment variables is currently experimental.
To enable it, set `GOFIGURE_ENV_ARRAY=1`.
When enabled, the environment variable is split on commas, e.g.
```
struct {
EnvArray []string `env:"MY_ENV_VAR"`
}MY_ENV_VAR=a,b,c
EnvArray = []string{"a", "b", "c"}
```### Licence
Copyright © 2014, Ian Kent (http://www.iankent.eu).
Released under MIT license, see [LICENSE](LICENSE.md) for details.