diff --git a/env.go b/env.go index 6c48af5..db0a4d8 100644 --- a/env.go +++ b/env.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/subosito/gotenv" "os" + "path/filepath" "regexp" ) @@ -11,6 +12,22 @@ var envEntryRegexp = regexp.MustCompile("^([A-Za-z_0-9]+)=(.*)$") type Env map[string]string +type envFiles []string + +func (e *envFiles) String() string { + return fmt.Sprintf("%s", *e) +} + +func (e *envFiles) Set(value string) error { + *e = append(*e, fullPath(value)) + return nil +} + +func fullPath(file string) string { + root := filepath.Dir(".") + return filepath.Join(root, file) +} + func loadEnvs(files []string) (Env, error) { if len(files) == 0 { env, err := ReadEnv(fullPath(".env")) diff --git a/run.go b/run.go index 230428c..54b23ed 100644 --- a/run.go +++ b/run.go @@ -2,7 +2,6 @@ package main import ( "os" - "path/filepath" "strings" ) @@ -19,8 +18,10 @@ Examples: `, } +var runEnvs envFiles + func init() { - cmdRun.Flag.StringVar(&flagEnv, "e", ".env", "env") + cmdRun.Flag.Var(&runEnvs, "e", "env") } func runRun(cmd *Command, args []string) { @@ -32,11 +33,8 @@ func runRun(cmd *Command, args []string) { if err != nil { handleError(err) } - if flagEnv == "" { - flagEnv = filepath.Join(workDir, ".env") - } - env, err := ReadEnv(flagEnv) + env, err := loadEnvs(runEnvs) handleError(err) const interactive = true diff --git a/start.go b/start.go index 224b9d8..b1d7e3b 100644 --- a/start.go +++ b/start.go @@ -14,17 +14,6 @@ import ( const shutdownGraceTime = 3 * time.Second -type envFiles []string - -func (e *envFiles) String() string { - return fmt.Sprintf("%s", *e) -} - -func (e *envFiles) Set(value string) error { - *e = append(*e, fullPath(value)) - return nil -} - var flagPort int var flagConcurrency string var flagRestart bool @@ -191,11 +180,6 @@ func (f *Forego) startProcess(idx, procNum int, proc ProcfileEntry, env Env, of }() } -func fullPath(file string) string { - root := filepath.Dir(".") - return filepath.Join(root, file) -} - func runStart(cmd *Command, args []string) { pf, err := ReadProcfile(flagProcfile) handleError(err)