From 656dbf434d06d2dffdf2abab1592caa5d17a9275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Hock=20Isaza?= Date: Mon, 22 Dec 2014 19:30:02 -0500 Subject: [PATCH] Move loading multiple environments to env.go This way all the env related code is in the same place. --- env.go | 27 +++++++++++++++++++++++++++ env_test.go | 20 ++++++++++++++++++++ start.go | 31 ++----------------------------- start_test.go | 17 ----------------- 4 files changed, 49 insertions(+), 46 deletions(-) create mode 100644 env_test.go diff --git a/env.go b/env.go index c162fd1..6c48af5 100644 --- a/env.go +++ b/env.go @@ -11,6 +11,33 @@ var envEntryRegexp = regexp.MustCompile("^([A-Za-z_0-9]+)=(.*)$") type Env map[string]string +func loadEnvs(files []string) (Env, error) { + if len(files) == 0 { + env, err := ReadEnv(fullPath(".env")) + if err != nil { + return nil, err + } else { + return env, nil + } + } + + // Handle multiple environment files + env := make(Env) + for _, file := range files { + tmpEnv, err := ReadEnv(file) + + if err != nil { + return nil, err + } + + // Merge the file I just read into the env. + for k, v := range tmpEnv { + env[k] = v + } + } + return env, nil +} + func ReadEnv(filename string) (Env, error) { if _, err := os.Stat(filename); os.IsNotExist(err) { return make(Env), nil diff --git a/env_test.go b/env_test.go new file mode 100644 index 0000000..b52f44b --- /dev/null +++ b/env_test.go @@ -0,0 +1,20 @@ +package main + +import "testing" + +func TestMultipleEnvironmentFiles(t *testing.T) { + envs := []string{"fixtures/envs/.env1", "fixtures/envs/.env2"} + env, err := loadEnvs(envs) + + if err != nil { + t.Fatalf("Could not read environments: %s", err) + } + + if env["env1"] == "" { + t.Fatalf("$env1 should be present and is not") + } + + if env["env2"] == "" { + t.Fatalf("$env2 should be present and is not") + } +} diff --git a/start.go b/start.go index 80021d0..224b9d8 100644 --- a/start.go +++ b/start.go @@ -192,37 +192,10 @@ func (f *Forego) startProcess(idx, procNum int, proc ProcfileEntry, env Env, of } func fullPath(file string) string { - root := filepath.Dir(flagProcfile) + root := filepath.Dir(".") return filepath.Join(root, file) } -func parseEnvironment(files []string) (Env, error) { - if len(files) == 0 { - env, err := ReadEnv(fullPath(".env")) - if err != nil { - return nil, err - } else { - return env, nil - } - } - - // Handle multiple environment files - env := make(Env) - for _, file := range files { - tmpEnv, err := ReadEnv(file) - - if err != nil { - return nil, err - } - - // Merge the file I just read into the env. - for k, v := range tmpEnv { - env[k] = v - } - } - return env, nil -} - func runStart(cmd *Command, args []string) { pf, err := ReadProcfile(flagProcfile) handleError(err) @@ -230,7 +203,7 @@ func runStart(cmd *Command, args []string) { concurrency, err := parseConcurrency(flagConcurrency) handleError(err) - env, err := parseEnvironment(envs) + env, err := loadEnvs(envs) handleError(err) of := NewOutletFactory() diff --git a/start_test.go b/start_test.go index 560465b..0808dd2 100644 --- a/start_test.go +++ b/start_test.go @@ -106,20 +106,3 @@ func TestParseConcurrencyFlagNoValue(t *testing.T) { } } - -func TestMultipleEnvironmentFiles(t *testing.T) { - envs := []string{"fixtures/envs/.env1", "fixtures/envs/.env2"} - env, err := parseEnvironment(envs) - - if err != nil { - t.Fatalf("Could not read environments: %s", err) - } - - if env["env1"] == "" { - t.Fatalf("$env1 should be present and is not") - } - - if env["env2"] == "" { - t.Fatalf("$env2 should be present and is not") - } -}