github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/config/flags.go (about) 1 package config 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/spf13/cobra" 8 flag "github.com/spf13/pflag" 9 ) 10 11 // AvailableFlagValues returns all flags incl. values which are available to the command. 12 func AvailableFlagValues(cmd *cobra.Command, filters *StepFilters) map[string]interface{} { 13 flagValues := map[string]interface{}{} 14 flags := cmd.Flags() 15 //only check flags where value has been set 16 flags.Visit(func(pflag *flag.Flag) { 17 18 switch pflag.Value.Type() { 19 case "string": 20 flagValues[pflag.Name] = pflag.Value.String() 21 case "stringSlice": 22 flagValues[pflag.Name], _ = flags.GetStringSlice(pflag.Name) 23 case "bool": 24 flagValues[pflag.Name], _ = flags.GetBool(pflag.Name) 25 case "int": 26 flagValues[pflag.Name], _ = flags.GetInt(pflag.Name) 27 default: 28 fmt.Printf("Meta data type not set or not known: '%v'\n", pflag.Value.Type()) 29 os.Exit(1) 30 } 31 filters.Parameters = append(filters.Parameters, pflag.Name) 32 }) 33 return flagValues 34 } 35 36 // MarkFlagsWithValue marks a flag as changed if value is available for the flag through the step configuration. 37 func MarkFlagsWithValue(cmd *cobra.Command, stepConfig StepConfig) { 38 flags := cmd.Flags() 39 flags.VisitAll(func(pflag *flag.Flag) { 40 //mark as available in case default is available or config is available 41 if len(pflag.Value.String()) > 0 || stepConfig.Config[pflag.Name] != nil { 42 pflag.Changed = true 43 } 44 }) 45 }