You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jimzhan f204dc024c init imports 10 年之前
.gitignore Initial commit 10 年之前
LICENSE Initial commit 10 年之前
README.md init imports 10 年之前
deps.go init imports 10 年之前
doc.go init imports 10 年之前
env.go init imports 10 年之前
env_test.go init imports 10 年之前

README.md

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.