Skip to content

Commit dff689d

Browse files
authored
Merge pull request #383 from ndeloof/dotEnv
2 parents df01885 + 38e9de4 commit dff689d

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

cli/options.go

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,12 +277,27 @@ func GetEnvFromFile(currentEnv map[string]string, workingDir string, filenames [
277277
}
278278
dotEnvFile = abs
279279

280-
b, err := os.ReadFile(dotEnvFile)
280+
s, err := os.Stat(dotEnvFile)
281281
if os.IsNotExist(err) {
282-
if len(filenames) > 0 {
283-
return nil, errors.Errorf("Couldn't read env file: %s", dotEnvFile)
282+
if len(filenames) == 0 {
283+
return envMap, nil
284284
}
285-
return envMap, nil
285+
return envMap, errors.Errorf("Couldn't find env file: %s", dotEnvFile)
286+
}
287+
if err != nil {
288+
return envMap, err
289+
}
290+
291+
if s.IsDir() {
292+
if len(filenames) == 0 {
293+
return envMap, nil
294+
}
295+
return envMap, errors.Errorf("%s is a directory", dotEnvFile)
296+
}
297+
298+
b, err := os.ReadFile(dotEnvFile)
299+
if os.IsNotExist(err) {
300+
return nil, errors.Errorf("Couldn't read env file: %s", dotEnvFile)
286301
}
287302
if err != nil {
288303
return envMap, err

cli/options_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"fmt"
2121
"os"
2222
"path/filepath"
23+
"strings"
2324
"testing"
2425

2526
"gotest.tools/v3/assert"
@@ -308,3 +309,16 @@ func TestEnvMap(t *testing.T) {
308309
m = utils.GetAsEqualsMap(l)
309310
assert.Equal(t, m["foo"], "bar")
310311
}
312+
313+
func TestGetEnvFromFile(t *testing.T) {
314+
wd := t.TempDir()
315+
f := filepath.Join(wd, ".env")
316+
err := os.Mkdir(f, 0o700)
317+
assert.NilError(t, err)
318+
319+
_, err = GetEnvFromFile(nil, wd, nil)
320+
assert.NilError(t, err)
321+
322+
_, err = GetEnvFromFile(nil, wd, []string{f})
323+
assert.Check(t, strings.HasSuffix(err.Error(), ".env is a directory"))
324+
}

0 commit comments

Comments
 (0)