diff --git a/app/cli.go b/app/cli.go index 542f01f4d..c67a47b85 100644 --- a/app/cli.go +++ b/app/cli.go @@ -20,10 +20,14 @@ func (app *CortezaApp) InitCLI() { // path to all environmental files (or locations with .env file) // filled from flag values - envs = []string{"."} + envs []string ) app.Command = cli.RootCommand(func() error { + if len(envs) == 0 { + envs = []string{"."} + } + if err := cli.LoadEnv(envs...); err != nil { return fmt.Errorf("failed to load environmental variables: %w", err) } diff --git a/pkg/cli/env.go b/pkg/cli/env.go index 54a1733a1..22f0ecb71 100644 --- a/pkg/cli/env.go +++ b/pkg/cli/env.go @@ -11,18 +11,34 @@ import ( // LoadEnv loads env-variables (KEY=VAL) from provided files and paths (by searching for .env file in the given path) // -// Please not that loaded values DO NOT OVERRIDE the existing environmental variables +// Please note that loaded values +// DO NOT OVERRIDE the existing +// environmental variables func LoadEnv(pp ...string) error { // preparse the input and try to figure out if .env should be appended - for i, p := range pp { + var checked = make([]string, 0, len(pp)) + for _, p := range pp { if s, err := os.Stat(p); err != nil { return err } else if s.IsDir() { - pp[i] = path.Join(p, ".env") + //pp[i] = path.Join(p, ".env") + chk := path.Join(p, ".env") + if _, err = os.Stat(chk); err == nil { + // make sure only .env files + checked = append(checked, chk) + } else if err != os.ErrNotExist { + return err + } + } else { + checked = append(checked, p) } } - return godotenv.Load(pp...) + if len(checked) == 0 { + return nil + } + + return godotenv.Load(checked...) } // EnvCommand outputs all loaded env variables