Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/codingconcepts/env
Tag-based environment configuration for structs
https://github.com/codingconcepts/env
Last synced: 10 days ago
JSON representation
Tag-based environment configuration for structs
- Host: GitHub
- URL: https://github.com/codingconcepts/env
- Owner: codingconcepts
- License: mit
- Created: 2017-06-14T20:01:55.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-06-18T13:34:07.000Z (5 months ago)
- Last Synced: 2024-07-31T20:42:40.463Z (3 months ago)
- Language: Go
- Homepage:
- Size: 47.9 KB
- Stars: 112
- Watchers: 2
- Forks: 14
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go - env - Tag-based environment configuration for structs. (Command Line / Standard CLI)
- fucking-awesome-go - env - Tag-based environment configuration for structs. (Command Line / Standard CLI)
- awesome-go - env - Tag-based environment configuration for structs. (Command Line / Standard CLI)
- awesome-go - env - Tag-based environment configuration for structs. (Command Line / Standard CLI)
- awesome-go-extra - env - based environment configuration for structs|93|9|1|2017-06-14T20:01:55Z|2020-08-21T22:01:19Z| (Build Automation / Standard CLI)
- awesome-go-with-stars - env - Tag-based environment configuration for structs. (Command Line / Standard CLI)
- awesome-go - env - Tag-based environment configuration for structs - ★ 34 (Command Line)
- awesome-go-plus - env - Tag-based environment configuration for structs. (Command Line / Standard CLI)
- awesome-go-plus - env - Tag-based environment configuration for structs. (Command Line / Standard CLI)
README
# env
Tag-based environment configuration for structs.[![Godoc](https://godoc.org/github.com/codingconcepts/env?status.svg)](https://godoc.org/github.com/codingconcepts/env)
[![Build Status](https://travis-ci.org/codingconcepts/env.svg?branch=master)](https://travis-ci.org/codingconcepts/env)
[![Go Report Card](https://goreportcard.com/badge/github.com/codingconcepts/env)](https://goreportcard.com/report/github.com/codingconcepts/env)## Installation
``` bash
$ go get -u github.com/codingconcepts/env
```## Usage
``` go
package mainimport (
"fmt"
"log"
"time""github.com/codingconcepts/env"
)type config struct {
Secret []byte `env:"SECRET" required:"true"`
Region string `env:"REGION"`
Port int `env:"PORT" required:"true"`
Peers []string `env:"PEERS"` // you can use `delimiter` tag to specify separator, for example `delimiter:" "`
ConnectionTimeout time.Duration `env:"TIMEOUT" default:"10s"`
}func main() {
c := config{}
if err := env.Set(&c); err != nil {
log.Fatal(err)
}...
}
`````` bash
$ ID=1 SECRET=shh PORT=1234 PEERS=localhost:1235,localhost:1236 TIMEOUT=5s go run main.go
```## Supported field types
- `bool` and `[]bool`
- `string` and `[]string`
- `[]byte`
- `int`, `int8`, `int16`, `int32`, `int64`, `[]int`, `[]int8`, `[]int16`, `[]int32`, and `[]int64`
- `uint`, `uint8`, `uint16`, `uint32`, `uint64`, `[]uint`, `[]uint8`, `[]uint16`, `[]uint32`, and `[]uint64`
- `float32`, `float64`, `[]float32`, and `[]float64`
- `time.Duration` and `[]time.Duration`