mirror of
https://github.com/go-task/task.git
synced 2024-12-12 10:45:49 +02:00
61 lines
1.4 KiB
Go
61 lines
1.4 KiB
Go
package templater
|
|
|
|
import (
|
|
"path/filepath"
|
|
"runtime"
|
|
"strings"
|
|
"text/template"
|
|
|
|
sprig "github.com/go-task/slim-sprig"
|
|
"mvdan.cc/sh/v3/shell"
|
|
"mvdan.cc/sh/v3/syntax"
|
|
)
|
|
|
|
var (
|
|
templateFuncs template.FuncMap
|
|
)
|
|
|
|
func init() {
|
|
taskFuncs := template.FuncMap{
|
|
"OS": func() string { return runtime.GOOS },
|
|
"ARCH": func() string { return runtime.GOARCH },
|
|
"catLines": func(s string) string {
|
|
s = strings.ReplaceAll(s, "\r\n", " ")
|
|
return strings.ReplaceAll(s, "\n", " ")
|
|
},
|
|
"splitLines": func(s string) []string {
|
|
s = strings.ReplaceAll(s, "\r\n", "\n")
|
|
return strings.Split(s, "\n")
|
|
},
|
|
"fromSlash": func(path string) string {
|
|
return filepath.FromSlash(path)
|
|
},
|
|
"toSlash": func(path string) string {
|
|
return filepath.ToSlash(path)
|
|
},
|
|
"exeExt": func() string {
|
|
if runtime.GOOS == "windows" {
|
|
return ".exe"
|
|
}
|
|
return ""
|
|
},
|
|
"shellQuote": func(str string) (string, error) {
|
|
return syntax.Quote(str, syntax.LangBash)
|
|
},
|
|
"splitArgs": func(s string) ([]string, error) {
|
|
return shell.Fields(s, nil)
|
|
},
|
|
// IsSH is deprecated.
|
|
"IsSH": func() bool { return true },
|
|
}
|
|
// Deprecated aliases for renamed functions.
|
|
taskFuncs["FromSlash"] = taskFuncs["fromSlash"]
|
|
taskFuncs["ToSlash"] = taskFuncs["toSlash"]
|
|
taskFuncs["ExeExt"] = taskFuncs["exeExt"]
|
|
|
|
templateFuncs = sprig.TxtFuncMap()
|
|
for k, v := range taskFuncs {
|
|
templateFuncs[k] = v
|
|
}
|
|
}
|