Tag-based environment configuration for structs.
$ go get -u github.com/codingconcepts/envpackage main
import (
"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)
}
...
}$ ID=1 SECRET=shh PORT=1234 PEERS=localhost:1235,localhost:1236 TIMEOUT=5s go run main.gobooland[]boolstringand[]string[]byteint,int8,int16,int32,int64,[]int,[]int8,[]int16,[]int32, and[]int64uint,uint8,uint16,uint32,uint64,[]uint,[]uint8,[]uint16,[]uint32, and[]uint64float32,float64,[]float32, and[]float64time.Durationand[]time.Duration