in pkg/selector/outputs/outputs.go [109:157]
func TableOutputWide(instanceTypeInfoSlice []*instancetypes.Details) []string {
if len(instanceTypeInfoSlice) == 0 {
return nil
}
w := new(tabwriter.Writer)
buf := new(bytes.Buffer)
w.Init(buf, 8, 8, 2, ' ', 0)
defer w.Flush()
columnDataStruct := wideColumnsData{}
headers := []interface{}{}
structType := reflect.TypeOf(columnDataStruct)
for i := 0; i < structType.NumField(); i++ {
columnHeader := structType.Field(i).Tag.Get(columnTag)
headers = append(headers, columnHeader)
}
separators := make([]interface{}, 0)
headerFormat := ""
for _, header := range headers {
headerFormat = headerFormat + "%s\t"
separators = append(separators, strings.Repeat("-", len(header.(string))))
}
fmt.Fprintf(w, headerFormat, headers...)
fmt.Fprintf(w, "\n"+headerFormat, separators...)
columnsData := getWideColumnsData(instanceTypeInfoSlice)
for _, data := range columnsData {
fmt.Fprintf(w, "\n%s\t%d\t%s\t%s\t%t\t%t\t%s\t%s\t%d\t%d\t%s\t%s\t%s\t%s\t",
data.instanceName,
data.vcpu,
data.memory,
data.hypervisor,
data.currentGen,
data.hibernationSupport,
data.cpuArch,
data.networkPerformance,
data.eni,
data.gpu,
data.gpuMemory,
data.gpuInfo,
data.odPrice,
data.spotPrice,
)
}
w.Flush()
return []string{buf.String()}
}