func TableOutputWide()

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()}
}