func (c *config) Usage() {
	headers := getHeaders(c.fields)
	w := tabwriter.NewWriter(UsageOutput, 0, 0, 4, ' ', 0)
	fmt.Fprintf(w, "\nSupported Fields:\n")
	fmt.Fprintln(w, strings.ToUpper(strings.Join(headers, "\t")))
	dashes := make([]string, len(headers))
	for i, f := range headers {
		n := len(f)
		if n < 5 {
			n = 5
		}
		dashes[i] = strings.Repeat("-", n)
	}
	fmt.Fprintln(w, strings.Join(dashes, "\t"))
	for _, f := range c.fields {
		values := make([]string, len(headers))
		values[0] = f.Name()
		for i, header := range headers[1:] {
			value := f.Meta()[header]
			values[i+1] = value
		}
		fmt.Fprintln(w, strings.Join(values, "\t"))
	}
	err := w.Flush()
	if err != nil {
		log.Fatal(err)
	}
}
Usage prints out the current config fields, flags, env vars
and any other source and setting.
package uconfig
import (
	"fmt"
	"io"
	"log"
	"os"
	"sort"
	"strings"
	"text/tabwriter"
	"github.com/omeid/uconfig/flat"
)
var UsageOutput io.Writer = os.Stdout