• Stars
    star
    155
  • Rank 232,409 (Top 5 %)
  • Language
    Go
  • License
    MIT License
  • Created over 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Envy makes working with ENV variables in Go trivial.

envy

Actions Status

Envy makes working with ENV variables in Go trivial.

  • Get ENV variables with default values.
  • Set ENV variables safely without affecting the underlying system.
  • Temporarily change ENV vars; useful for testing.
  • Map all of the key/values in the ENV.
  • Loads .env files (by using godotenv)
  • More!

Installation

$ go get -u github.com/gobuffalo/envy

Usage

func Test_Get(t *testing.T) {
	r := require.New(t)
	r.NotZero(os.Getenv("GOPATH"))
	r.Equal(os.Getenv("GOPATH"), envy.Get("GOPATH", "foo"))
	r.Equal("bar", envy.Get("IDONTEXIST", "bar"))
}

func Test_MustGet(t *testing.T) {
	r := require.New(t)
	r.NotZero(os.Getenv("GOPATH"))
	v, err := envy.MustGet("GOPATH")
	r.NoError(err)
	r.Equal(os.Getenv("GOPATH"), v)

	_, err = envy.MustGet("IDONTEXIST")
	r.Error(err)
}

func Test_Set(t *testing.T) {
	r := require.New(t)
	_, err := envy.MustGet("FOO")
	r.Error(err)

	envy.Set("FOO", "foo")
	r.Equal("foo", envy.Get("FOO", "bar"))
}

func Test_Temp(t *testing.T) {
	r := require.New(t)

	_, err := envy.MustGet("BAR")
	r.Error(err)

	envy.Temp(func() {
		envy.Set("BAR", "foo")
		r.Equal("foo", envy.Get("BAR", "bar"))
		_, err = envy.MustGet("BAR")
		r.NoError(err)
	})

	_, err = envy.MustGet("BAR")
	r.Error(err)
}

.env files support

Envy now supports loading .env files by using the godotenv library. That means one can use and define multiple .env files which will be loaded on-demand. By default, no env files will be loaded. To load one or more, you need to call the envy.Load function in one of the following ways:

envy.Load() // 1

envy.Load("MY_ENV_FILE") // 2

envy.Load(".env", ".env.prod") // 3

envy.Load(".env", "NON_EXISTING_FILE") // 4

// 5
envy.Load(".env")
envy.Load("NON_EXISTING_FILE")

// 6
envy.Load(".env", "NON_EXISTING_FILE", ".env.prod")
  1. Will load the default .env file
  2. Will load the file MY_ENV_FILE, but not .env
  3. Will load the file .env, and after that will load the .env.prod file. If any variable is redefined in . env.prod it will be overwritten (will contain the env.prod value)
  4. Will load the .env file and return an error as the second file does not exist. The values in .env will be loaded and available.
  5. Same as 4
  6. Will load the .env file and return an error as the second file does not exist. The values in .env will be loaded and available, but the ones in .env.prod won't.

More Repositories

1

buffalo

Rapid Web Development w/ Go
Go
8,034
star
2

packr

The simple and easy way to embed static files into Go binaries.
Go
3,412
star
3

pop

A Tasty Treat For All Your Database Needs
Go
1,401
star
4

plush

The powerful template system that Go needs
Go
851
star
5

fizz

A Common DSL for Migrating Databases
Go
147
star
6

docs

The source for the Buffalo website
JavaScript
110
star
7

flect

An inflection engine for golang
Go
99
star
8

vuerecipe

A recipe for using Buffalo & Vue.js
Go
96
star
9

validate

This package provides a framework for writing validations for Go applications.
Go
93
star
10

velvet

A sweet velvety templating package
Go
73
star
11

genny

A framework for writing modular generators
Go
65
star
12

toodo

A Simple Todo Application Written in Buffalo
Go
58
star
13

tags

HTML tags in Go
Go
53
star
14

buffalo-auth

Buffalo auth plugin helps adding username password authentication to your app
Go
42
star
15

nulls

A collection of null types for the sql package
Go
41
star
16

authrecipe

A recipe for using Buffalo & Password Authentication
Go
29
star
17

suite

A test suite for Buffalo applications
Go
26
star
18

lush

Go
25
star
19

shoulders

SHOULDERS.md generator
Go
20
star
20

buffalo-pop

A plugin to use gobuffalo/pop with buffalo
Go
19
star
21

cli

The Buffalo CLI
Go
19
star
22

here

Go
16
star
23

buffalo-heroku

Sets up and deploys apps to Heroku
Go
16
star
24

buffalo-plugins

This plugin has moved into github.com/gobuffalo/buffalo in buffalo v0.14.6. https://github.com/gobuffalo/buffalo
Go
16
star
25

events

Buffalo framework events management
Go
15
star
26

gocraft-work-adapter

Implements the github.com/gobuffalo/buffalo/worker.Worker interface using the github.com/gocraft/work package.
Go
14
star
27

httptest

Go
14
star
28

mw-tokenauth

Buffalo token-based-authentication middleware
Go
13
star
29

buffalo-goth

Goth Generator for Buffalo
Go
12
star
30

toolkit

A tool discovery service for https://gobuffalo.io
Go
12
star
31

clara

Go
11
star
32

makr

File generation system
Go
11
star
33

packd

gobuffalo/packr interfaces
Go
9
star
34

buffalo-cli

Tools for developing Buffalo applications (v2 - WIP)
Go
9
star
35

gothrecipe

A recipe for using Buffalo & Goth
Go
8
star
36

helpers

Go
8
star
37

logger

A common logging interface for the Buffalo ecosystem
Go
8
star
38

release

Buffalo ecosystem release tool
Go
8
star
39

mw-csrf

Buffalo CSRF Middleware
Go
7
star
40

grift

Go based task runner
Go
7
star
41

mw-basicauth

Buffalo Basic Auth Middleware
Go
6
star
42

mw-i18n

Buffalo i18n Middleware
Go
6
star
43

homebrew-tap

Homebrew Formula for the buffalo projects binaries
Ruby
6
star
44

licenser

Go
5
star
45

meta

Introspection for buffalo applications
Go
5
star
46

buffalo-docker

This plugin has moved into github.com/gobuffalo/buffalo in buffalo v0.14.7.
Go
4
star
47

simple-ajax-recipe

A simple AJAX recipe for Buffalo
Go
4
star
48

plugins

Go
4
star
49

soda

Soda is a CLI for https://github.com/gobuffalo/pop
Go
4
star
50

mw-forcessl

Buffalo Middleware to force SSL
Go
4
star
51

mw-paramlogger

Buffalo Params Logger Middleware
Go
3
star
52

x

Collection of packages meant to be a "testing" ground for Buffalo packages
Go
3
star
53

mw-contenttype

Buffalo Content Type Middleware
Go
3
star
54

plushgen

Go
2
star
55

pop-vgo

Shell
2
star
56

gitgen

Makefile
2
star
57

gogen

Go
1
star
58

attrs

Go
1
star
59

replo

A GO REPL
Go
1
star
60

middleware

The default middleware for Buffalo apps
Go
1
star
61

mapi

Go
1
star
62

mapgen

Go
1
star
63

depgen

Go
1
star
64

syncx

Go
1
star