package config import ( "fmt" "reflect" ) // Report returns global config values as a table for reporting. func (c Options) Report() (rows [][]string, cols []string) { v := reflect.ValueOf(c) cols = []string{"Name", "Type", "CLI Flag"} rows = make([][]string, 0, v.NumField()) // Iterate through all config fields. for i := 0; i < v.NumField(); i++ { fieldValue := v.Field(i) yamlName := v.Type().Field(i).Tag.Get("yaml") flagName := v.Type().Field(i).Tag.Get("flag") if yamlName == "" || yamlName == "-" || flagName == "" { continue } fieldType := fmt.Sprintf("%T", fieldValue.Interface()) rows = append(rows, []string{yamlName, fieldType, "--" + flagName}) } return rows, cols }