package env /* env === Ease of Accessing Environment Varaibles. ## Installation ```shell $ go get -v github.com/goanywhere/env ``` ## Usage Add the application settings to file `.env` right under the root of your project: ```shell MY_SECRET_KEY=YOURSECRETKEY Case_Will_Be_IgNoreD=YOURSECRETKEYGOESHERE ``` You can double/single quote string values: ```shell 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: ```shell export USERNAME=account@goanywhere.io export PASSWORD=AccountPasswordGoesHere ``` All set now, you are good to Go :-) ``` go package main import ( "github.com/goanywhere/env" "github.com/goanywhere/rex" ) func index (ctx *rex.Context) { ctx.HTML("index.html") } func main() { // Override default 5000 port here. env.Set("port", "9394") app := rex.New() app.Get("/", index) app.Serve() } ``` You will now have the HTTP server running on `0.0.0.0:9394`. `env` supports namespace (case-insensitive, same as the key). ``` go import ( "fmt" "github.com/goanywhere/env" ) func main() { env.Set("debug", "false", "production") fmt.Printf("debug: %s", env.Get("debug", "production")) } ``` `env` also supports custom struct for you to access the reflected values (the key is case-insensitive). ``` go package main import ( "fmt" "github.com/goanywhere/env" ) type Spec struct { App string } func main() { var spec Spec env.Set("app", "myapplication") env.Map(&spec) fmt.Printf("App: %s", spec.App) // output: "App: myapplication" } ``` We also includes dotenv supports: ``` text test1 = value1 test2 = 'value2' test3 = "value3" export test4=value4 ``` ``` go package main import ( "fmt" "github.com/goanywhere/env" ) func main() { // Load '.env' from current working directory. env.Load(".env") fmt.Printf("", env.Get("test")) // output: "value" fmt.Printf("", env.Get("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. */