README
¶
env
Tag-based environment configuration for structs.
Installation
$ go get -u github.com/codingconcepts/env
Usage
package 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.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
Documentation
¶
Overview ¶
Package env makes satisfying factor III of the 12-factor methodology easy, by allowing struct fields to be populated directly from environment variables with the use of struct tags.
To use, create a struct tag called "env" and call env.Set, passing a pointer to the struct you wish to populate. You can optionally, provide a "required" tag to determine whether an error should be returned in the event of missing environment configuration.
Like the encoding/* packages, env.Set will return an error if a non-pointer type is provided.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
Click to show internal directories.
Click to hide internal directories.