func PrintList(w io.Writer, fields []string, items []map[string]string) {
	if sw, ok := structured(w); ok {
		converted := make([]map[string]string, len(items))
		for i, item := range items {
			converted[i] = keysToCamelCase(item)
		}
		printStructured(sw, converted)
		return
	}
	if len(items) == 0 {
		fmt.Fprintln(w, "no results")
		return
	}
	tw := tabwriter.NewWriter(w, 0, 0, padding, ' ', 0)
	for _, field := range fields {
		fmt.Fprintf(tw, "%v\t", field)
	}
	fmt.Fprintln(tw, "")
	for _, field := range fields {
		fmt.Fprintf(tw, "%v\t", strings.Repeat("=", len(field)))
	}
	fmt.Fprintln(tw, "")
	for _, m := range items {
		for _, f := range fields {
			fmt.Fprintf(tw, "%v\t", m[f])
		}
		fmt.Fprintln(tw, "")
	}
	tw.Flush()
}
PrintList outputs a formatted list to the console.
package output
import (
	"fmt"
	"io"
	"strings"
	"text/tabwriter"
)
const padding = 2
func PrintMap(w io.Writer, fields []string, m map[string]string) {
	if sw, ok := structured(w); ok {
		printStructured(sw, keysToCamelCase(m))
		return
	}
	tw := tabwriter.NewWriter(w, 0, 0, padding, ' ', 0)
	for _, field := range fields {
		fmt.Fprintf(tw, "%v:\t%v\n", field, m[field])
	}
	tw.Flush()
}
func PrintAllMap(w io.Writer, m map[string]string) {
	if sw, ok := structured(w); ok {
		printStructured(sw, keysToCamelCase(m))
		return
	}
	tw := tabwriter.NewWriter(w, 0, 0, padding, ' ', 0)
	for field, val := range m {
		fmt.Fprintf(tw, "%v:\t%v\n", field, val)
	}
	tw.Flush()
}