From 6f7b26908f502a60fe8fc002629727ed41b1df68 Mon Sep 17 00:00:00 2001 From: Sascha Andres Date: Mon, 6 Mar 2017 13:48:56 +0100 Subject: [PATCH] Added ability to add environment variables per task Add an anv section to the task --- cmd/task/Taskfile.yml | 5 +++++ task.go | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 cmd/task/Taskfile.yml diff --git a/cmd/task/Taskfile.yml b/cmd/task/Taskfile.yml new file mode 100644 index 00000000..59d951ae --- /dev/null +++ b/cmd/task/Taskfile.yml @@ -0,0 +1,5 @@ +build: + cmds: + - echo $hallo + env: + hallo: welt diff --git a/task.go b/task.go index 1c232a32..044a4dcb 100644 --- a/task.go +++ b/task.go @@ -2,6 +2,7 @@ package task import ( "encoding/json" + "fmt" "io/ioutil" "log" "os" @@ -47,6 +48,7 @@ type Task struct { Dir string Vars map[string]string Set string + Env map[string]string } // Run runs Task @@ -104,7 +106,7 @@ func RunTask(name string) error { } for i := range t.Cmds { - if err = t.runCommand(i); err != nil { + if err = t.runCommand(i, t.Env); err != nil { return &taskRunError{name, err} } } @@ -129,7 +131,7 @@ func (t *Task) isUpToDate() bool { return generatesMinTime.After(sourcesMaxTime) } -func (t *Task) runCommand(i int) error { +func (t *Task) runCommand(i int, envVariables map[string]string) error { vars, err := t.handleVariables() if err != nil { return err @@ -151,6 +153,13 @@ func (t *Task) runCommand(i int) error { if dir != "" { cmd.Dir = dir } + if nil != envVariables { + env := os.Environ() + for key, value := range envVariables { + env = append(env, fmt.Sprintf("%s=%s", key, value)) + } + cmd.Env = env + } cmd.Stdin = os.Stdin cmd.Stderr = os.Stderr if t.Set != "" {