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  }