github.com/pavlo67/common@v0.5.3/common/starter/run.go (about) 1 package starter 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 8 "github.com/pavlo67/common/common/config" 9 "github.com/pavlo67/common/common/joiner" 10 "github.com/pavlo67/common/common/joiner/joiner_runtime" 11 "github.com/pavlo67/common/common/logger" 12 ) 13 14 func Run(starters []Component, environment *config.Envs, label string, l logger.Operator) (joiner.Operator, error) { 15 joinerOp := joiner_runtime.New(nil, l) 16 17 for _, c := range starters { 18 name := c.Name() 19 if key, ok := c.Options.String("interface_key"); ok { 20 name += " / " + key 21 } 22 23 l.Info("running component: ", name) 24 25 if err := c.Run(environment, c.Options, joinerOp, l); err != nil { 26 return nil, fmt.Errorf("error calling .Run() for component (%s): %s", name, err) 27 } 28 } 29 30 env, ok := os.LookupEnv("ENV") 31 if !ok || strings.TrimSpace(env) == "" { 32 env = "(default)" 33 } 34 l.Info(label + "; environment = " + env) 35 36 return joinerOp, nil 37 }