github.com/flanksource/konfigadm@v0.12.0/cmd/common.go (about)

     1  package cmd
     2  
     3  import (
     4  	"os"
     5  
     6  	_ "github.com/flanksource/konfigadm/pkg" // nolint: golint
     7  	"github.com/flanksource/konfigadm/pkg/phases"
     8  	"github.com/flanksource/konfigadm/pkg/types"
     9  	log "github.com/sirupsen/logrus"
    10  	"github.com/spf13/cobra"
    11  )
    12  
    13  func GetConfigWithImage(cmd *cobra.Command, args []string, image Image) *types.Config {
    14  	return nil
    15  }
    16  
    17  func GetConfig(cmd *cobra.Command, args []string) *types.Config {
    18  	configs, err := cmd.Flags().GetStringSlice("config")
    19  	if err != nil {
    20  		log.Fatalf("%s", err)
    21  	}
    22  	vars, err := cmd.Flags().GetStringSlice("var")
    23  	if err != nil {
    24  		log.Fatalf("%s", err)
    25  	}
    26  
    27  	flags := []types.Flag{}
    28  
    29  	if alias != nil {
    30  		flags = append(flags, alias.Tags...)
    31  	} else if ok, _ := cmd.Flags().GetBool("detect-tags"); ok {
    32  		for _, _os := range phases.SupportedOperatingSystems {
    33  			if _os.DetectAtRuntime() {
    34  				flags = append(flags, _os.GetTags()...)
    35  			}
    36  		}
    37  		if os.Getenv("container") != "" {
    38  			flags = append(flags, types.CONTAINER)
    39  		}
    40  		log.Debugf("Detected %s\n", flags)
    41  	}
    42  
    43  	flagNames, err := cmd.Flags().GetStringSlice("tag")
    44  	if err != nil {
    45  		log.Fatalf("%s", err)
    46  	}
    47  
    48  	for _, name := range flagNames {
    49  		if flag, ok := types.FLAG_MAP[name]; ok {
    50  			flags = append(flags, flag)
    51  		} else {
    52  			log.Fatalf("Unknown flag %s", name)
    53  		}
    54  
    55  	}
    56  
    57  	log.Infof("Using tags: %s\n", flags)
    58  
    59  	cfg, err := types.NewConfig(append(configs, args...)...).
    60  		WithVars(vars...).
    61  		WithFlags(flags...).
    62  		Build()
    63  
    64  	if err != nil {
    65  		panic(nil)
    66  	}
    67  	return cfg
    68  
    69  }