goanywhere / env

Ease of Accessing Environment Varaibles in Golang
Apache License 2.0
3 stars 5 forks source link

env

Build Status GoDoc

Ease of Accessing Environment Varaibles in Golang

Installation

$ go get -v github.com/goanywhere/env

Usage

PORT=9394
SECRET_KEY=YOURSECRETKEY

You can double/single quote string values:

PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----HkVN9…-----END DSA PRIVATE KEY-----"

You can use export in front of each line just like your shell settings, so that you can source the file in your terminal directly:

export USERNAME=account@goanywhere.io
export PASSWORD=AccountPasswordGoesHere

Export these values, you can then access them using env now.

package main

import (
    "github.com/goanywhere/env"
)

func main() {
    env.Int("PORT")             // 9394
    env.String("SECRET_KEY")    // YOURSECERTKEY
    .......
}

env also supports custom struct for you to access the reflected values.

package main

import (
    "fmt"
    "github.com/goanywhere/env"
)

type Spec struct {
    App         string
    SecretKey   string  `env:"SECRET_KEY"`
}

func main() {
    var spec Spec

    env.Set("App", "myapplication")
    env.Set("SECRET_KEY", "wGv7ELIx8P8qsUit9OuWw2zwPEF0nXtvjIKZQOioAVuI5GnHSwBAeWZ6l4-SpIPT")
    env.Map(&spec)

    fmt.Printf("App: %s", spec.App)             // output: "App: myapplication"
    fmt.Printf("Secret: %s", spec.SecretKey)    // output: "Secret: wGv7ELIx8P8qsUit9OuWw2zwPEF0nXtvjIKZQOioAVuI5GnHSwBAeWZ6l4-SpIPT"
}

We also includes dotenv supports, simply add the application settings to file .env right under the root of your project:

test1  =  value1
test2 = 'value2'
test3 = "value3"
export test4=value4
package main

import (
    "fmt"

    "github.com/goanywhere/env"
)

func main() {
    // Load '.env' from current working directory.
    env.Load()

    fmt.Printf("<test1: %s>", env.String("test1"))  // output: "value1"
    fmt.Printf("<test2: %s>", env.String("test2"))  // output: "value2"
}

NOTES

Sensitive settings should ONLY be accessible on the machines that need access to them. NEVER commit them to a repository (even a private one) that is not needed by every development machine and server.