Skip to content

Commit

Permalink
feat: add LoadFiles, LoadExistFiles direct load from a file
Browse files Browse the repository at this point in the history
  • Loading branch information
inhere committed Jun 12, 2022
1 parent 5e18c4e commit 0d3bc0b
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 2 deletions.
24 changes: 24 additions & 0 deletions dotenv/dotenv.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ func LoadedData() map[string]string {
return loadedData
}

// Reset clear the previously set ENV value
func Reset() { ClearLoaded() }

// ClearLoaded clear the previously set ENV value
func ClearLoaded() {
for key := range loadedData {
Expand Down Expand Up @@ -77,6 +80,27 @@ func LoadExists(dir string, filenames ...string) error {
return err
}

// LoadFiles load ENV from given file
func LoadFiles(filePaths ...string) (err error) {
for _, filePath := range filePaths {
if err = loadFile(filePath); err != nil {
break
}
}
return
}

// LoadExistFiles load ENV from given files, only load exists
func LoadExistFiles(filePaths ...string) error {
oldVal := OnlyLoadExists
defer func() {
OnlyLoadExists = oldVal
}()

OnlyLoadExists = true
return LoadFiles(filePaths...)
}

// LoadFromMap load data from given string map
func LoadFromMap(kv map[string]string) (err error) {
for key, val := range kv {
Expand Down
26 changes: 24 additions & 2 deletions dotenv/dotenv_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
)

func TestLoad(t *testing.T) {
defer ClearLoaded()
err := Load("./testdata", "not-exist", ".env")
assert.Error(t, err)

Expand All @@ -28,19 +29,40 @@ func TestLoad(t *testing.T) {
assert.Error(t, err)

assert.Equal(t, "def-val", Get("NOT-EXIST", "def-val"))
}

ClearLoaded()
func TestLoadFiles(t *testing.T) {
defer Reset()
assert.Error(t, LoadFiles("./testdata/not-exist"))
assert.Equal(t, "", os.Getenv("DONT_ENV_TEST"))

err := LoadFiles("./testdata/.env")

assert.NoError(t, err)
assert.Equal(t, "blog", os.Getenv("DONT_ENV_TEST"))
assert.Equal(t, "blog", Get("DONT_ENV_TEST"))
}

func TestLoadExists(t *testing.T) {
defer Reset()
assert.Equal(t, "", os.Getenv("DONT_ENV_TEST"))

err := LoadExists("./testdata", "not-exist", ".env")

assert.NoError(t, err)
assert.Equal(t, "blog", os.Getenv("DONT_ENV_TEST"))
assert.Equal(t, "blog", Get("DONT_ENV_TEST"))
ClearLoaded()
}

func TestLoadExistFiles(t *testing.T) {
defer Reset()
assert.Equal(t, "", os.Getenv("DONT_ENV_TEST"))

err := LoadExistFiles("./testdata/not-exist", "./testdata/.env")

assert.NoError(t, err)
assert.Equal(t, "blog", os.Getenv("DONT_ENV_TEST"))
assert.Equal(t, "blog", Get("DONT_ENV_TEST"))
}

func TestLoadFromMap(t *testing.T) {
Expand Down

0 comments on commit 0d3bc0b

Please sign in to comment.