package cmd import ( "fmt" "strings" "text/template" ) var tplFuncs = template.FuncMap{ "map": tplMap, "cat": tplCat, "join": tplJoin, "under": tplUnder, "varPrefix": tplVarPrefix, "inc": tplInc, } func tplMap(vals ...any) (map[string]any, error) { if len(vals)%2 != 0 { return nil, fmt.Errorf("missing value, need one key and one value per kv pair") } m := make(map[string]any) for i := 0; i < len(vals); i += 2 { m[vals[i].(string)] = vals[i+1] } return m, nil } func tplCat(strs ...string) string { return strings.Join(strs, "") } func tplJoin(strs []string, sep string) string { return strings.Join(strs, sep) } func tplUnder(s string) string { return strings.ToLower(strings.ReplaceAll(strings.ReplaceAll(s, " ", "_"), "-", "_")) } func tplVarPrefix(s string) string { if s == "" { return "" } return tplUnder(s) + "_" } func tplInc(i int) int { return i + 1 }