1
0
mirror of https://github.com/go-task/task.git synced 2025-02-03 13:22:11 +02:00

Added ability to add environment variables per task

Add an anv section to the task
This commit is contained in:
Sascha Andres 2017-03-06 13:48:56 +01:00
parent 4de3abe9e2
commit 6f7b26908f
2 changed files with 16 additions and 2 deletions

5
cmd/task/Taskfile.yml Normal file
View File

@ -0,0 +1,5 @@
build:
cmds:
- echo $hallo
env:
hallo: welt

13
task.go
View File

@ -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 != "" {