func createRows()

in pkg/selector/outputs/tableView.go [108:138]


func createRows(columnsData []*wideColumnsData, instanceTypes []*instancetypes.Details) *[]table.Row {
	rows := []table.Row{}

	// create a row for each instance type
	for i, data := range columnsData {
		rowData := table.RowData{}

		// create a new row by iterating through the column data
		// struct and using struct tags as column keys
		structType := reflect.TypeOf(*data)
		structValue := reflect.ValueOf(*data)
		for i := 0; i < structType.NumField(); i++ {
			currField := structType.Field(i)
			columnName := currField.Tag.Get(columnTag)
			colValue := structValue.Field(i)
			rowData[columnName] = getUnderlyingValue(colValue)
		}

		// add instance type as metaData
		rowData[instanceTypeKey] = instanceTypes[i]

		// add selected flag as metadata
		rowData[selectedKey] = false

		newRow := table.NewRow(rowData)

		rows = append(rows, newRow)
	}

	return &rows
}