Move loading multiple environments to env.go

This way all the env related code is in the same place.
This commit is contained in:
Nicolás Hock Isaza
2014-12-22 19:30:02 -05:00
parent e5004cd349
commit 656dbf434d
4 changed files with 49 additions and 46 deletions
+27
View File
@@ -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
+20
View File
@@ -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")
}
}
+2 -29
View File
@@ -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()
-17
View File
@@ -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")
}
}