func (u *Message) Msgf(message string, a ...interface{}) {
	u.Msg(fmt.Sprintf(message, a...))
}
Msgf prints a formatted message on the CLI
package termui
import (
	"bufio"
	"fmt"
	"os"
	"time"
	"github.com/fatih/color"
	"github.com/kyokomi/emoji"
	"github.com/olekukonko/tablewriter"
	"github.com/spf13/viper"
)
type msgType int
type valueType int
type valueVariant int
const (
	normal msgType = iota
	exclamation
	problem
	note
	success
	progress
)
const (
	tBool valueType = iota
	tString
	tInt
)
const (
	show valueVariant = iota
	ask
)
type UI struct {
	verbosity int  
}
type Message struct {
	ui           *UI  
	level        int
	msgType      msgType
	end          int
	compact      bool
	keepline     bool
	wait         time.Duration
	interactions []interaction
	tableHeaders [][]string
	tableData    [][][]string
}
type interaction struct {
	variant   valueVariant
	valueType valueType
	name      string
	value     interface{}
}
type Progress interface {
	Start()
	Stop()
	ChangeMessage(message string)
	ChangeMessagef(message string, a ...interface{})
}
func NewUI() *UI {
	return &UI{
		verbosity: verbosity(),
	}
}
func (u *UI) Progressf(message string, a ...interface{}) Progress {
	return u.Progress(fmt.Sprintf(message, a...))
}
func (u *UI) Progress(message string) Progress {
	return NewDotProgress(u, message)
}
func (u *UI) Normal() *Message {
	return &Message{
		ui:           u,
		msgType:      normal,
		interactions: []interaction{},
		end:          -1,
	}
}
func (u *UI) Exclamation() *Message {
	return &Message{
		ui:           u,
		msgType:      exclamation,
		interactions: []interaction{},
		end:          -1,
	}
}
func (u *UI) Note() *Message {
	return &Message{
		ui:           u,
		msgType:      note,
		interactions: []interaction{},
		end:          -1,
	}
}
func (u *UI) Success() *Message {
	return &Message{
		ui:           u,
		msgType:      success,
		interactions: []interaction{},
		end:          -1,
	}
}
func (u *UI) ProgressNote() *Message {
	return &Message{
		ui:           u,
		msgType:      progress,
		interactions: []interaction{},
		end:          -1,
	}
}
func (u *UI) Problem() *Message {
	return &Message{
		ui:           u,
		msgType:      problem,
		interactions: []interaction{},
		end:          -1,
	}
}