mirror of
https://github.com/wahyd4/forego.git
synced 2026-08-08 21:01:01 +10:00
Move loading multiple environments to env.go
This way all the env related code is in the same place.
This commit is contained in:
@@ -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
@@ -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")
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user