func RenderText(input string, data interface{}, fns template.FuncMap, isFile ...bool) string {
	t := template.New("cli")
	t.Funcs(template.FuncMap{
		"raw": func(s string) string {
			return s
		},
		"trim": strings.TrimSpace,
		"join": func(ss []string, sep string) string {
			return strings.Join(ss, sep)
		},
		"lcFirst": strutil.LowerFirst,
		"ucFirst": strutil.UpperFirst,
	})
	if len(fns) > 0 {
		t.Funcs(fns)
	}
	if len(isFile) > 0 && isFile[0] {
		template.Must(t.ParseFiles(input))
	} else {
		template.Must(t.Parse(input))
	}
	var buf bytes.Buffer
	if err := t.Execute(&buf, data); err != nil {
		panic(err)
	}
	return buf.String()
}
RenderText render text template with data
package helper
import (
	"bytes"
	"strings"
	"text/template"
	"github.com/gookit/goutil/strutil"
)
var (
	terminalWidth, terminalHeight int
)