A Go port of Ruby's dotenv library (Loads environment variables from `.env`.)
 
 
Go to file
John Barton (joho) 5896be1361 Add the ability to autoload the env file when you import. 2013-07-31 19:46:42 +10:00
autoload Add the ability to autoload the env file when you import. 2013-07-31 19:46:42 +10:00
fixtures First failing tests extracted from dotenv 2013-07-30 11:46:52 +10:00
.gitignore Macs are dumb. 2013-07-30 11:46:42 +10:00
LICENCE Licence and more readme 2013-07-31 14:16:18 +10:00
README.md Update readme 2013-07-31 14:38:18 +10:00
godotenv.go Write up something for "go doc" 2013-07-31 14:54:21 +10:00
godotenv_test.go Make sure we don't overwrite existing ENV vars. 2013-07-31 14:25:10 +10:00
wercker.yml Add wercker.yml for CI 2013-07-31 13:55:35 +10:00

README.md

GoDotEnv wercker status

A Go (golang) port of the Ruby dotenv project (which loads env vars from a .env file)

From the original Library:

Storing configuration in the environment is one of the tenets of a twelve-factor app. Anything that is likely to change between deployment environmentssuch as resource handles for databases or credentials for external servicesshould be extracted from the code into environment variables.

But it is not always practical to set environment variables on development machines or continuous integration servers where multiple projects are run. Dotenv load variables from a .env file into ENV when the environment is bootstrapped.

Installation

go get github.com/joho/godotenv

Usage

Add your application configuration to your .env file in the root of your project:

S3_BUCKET=YOURS3BUCKET
SECRET_KEY=YOURSECRETKEYGOESHERE

Then in your Go app you can do something like

import (
    "github.com/joho/godotenv"
    "os"
)

func main() {
  err := godotenv.Load()
  if err != nil {
    os.Fatal("Error loading .env file")
  }

  s3Bucket := os.Getenv("S3_BUCKET")
  secretKey := os.Getenv("SECRET_KEY")

  // now do something with s3 or whatever
}

While .env in the project root is the default, you don't have to be constrained

_ = godotenv.Load("somerandomfile")
_ = godotenv.Load("filenumberone.env", "filenumbertwo.env")

Are all valid options

Contributing

Contributions are most welcome! The parser itself is pretty stupidly naive and I wouldn't be surprised if it breaks with edge cases.

code changes without tests will not be accepted

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

CI

wercker status

Who?

The original library dotenv was written by Brandon Keepers, and this port was done by John Barton based off the tests/fixtures in the original library.