mirror of
https://github.com/go-task/task.git
synced 2025-02-03 13:22:11 +02:00
Switch variable replacing with Go's template engine
This commit is contained in:
parent
6368c2fdb6
commit
91d5fa5fe6
20
task.go
20
task.go
@ -89,7 +89,11 @@ func RunTask(name string) error {
|
||||
}
|
||||
|
||||
for _, d := range t.Deps {
|
||||
if err := RunTask(ReplaceVariables(d, vars)); err != nil {
|
||||
d, err = ReplaceVariables(d, vars)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err = RunTask(d); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@ -130,11 +134,15 @@ func (t *Task) runCommand(i int) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var (
|
||||
c = ReplaceVariables(t.Cmds[i], vars)
|
||||
dir = ReplaceVariables(t.Dir, vars)
|
||||
cmd *exec.Cmd
|
||||
)
|
||||
c, err := ReplaceVariables(t.Cmds[i], vars)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
dir, err := ReplaceVariables(t.Dir, vars)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
var cmd *exec.Cmd
|
||||
if ShExists {
|
||||
cmd = exec.Command(ShPath, "-c", c)
|
||||
} else {
|
||||
|
@ -1,11 +1,13 @@
|
||||
package task
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"runtime"
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
"gopkg.in/yaml.v2"
|
||||
@ -34,13 +36,23 @@ func (t Task) handleVariables() (map[string]string, error) {
|
||||
return localVariables, nil
|
||||
}
|
||||
|
||||
// ReplaceVariables writes variables into initial string
|
||||
func ReplaceVariables(initial string, variables map[string]string) string {
|
||||
replaced := initial
|
||||
for name, val := range variables {
|
||||
replaced = strings.Replace(replaced, fmt.Sprintf("{{%s}}", name), val, -1)
|
||||
var templateFuncs = template.FuncMap{
|
||||
"OS": func() string { return runtime.GOOS },
|
||||
"ARCH": func() string { return runtime.GOARCH },
|
||||
"IsSH": func() bool { return ShExists },
|
||||
}
|
||||
|
||||
// ReplaceVariables writes vars into initial string
|
||||
func ReplaceVariables(initial string, vars map[string]string) (string, error) {
|
||||
t, err := template.New("").Funcs(templateFuncs).Parse(initial)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return replaced
|
||||
b := bytes.NewBuffer(nil)
|
||||
if err = t.Execute(b, vars); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return b.String(), nil
|
||||
}
|
||||
|
||||
// GetEnvironmentVariables returns environment variables as map
|
||||
|
Loading…
x
Reference in New Issue
Block a user