1
0
mirror of https://github.com/go-task/task.git synced 2025-04-25 12:25:07 +02:00

Allow customizable number of expansions

Updates #66
This commit is contained in:
Andrey Nering 2018-03-04 15:50:03 -03:00
parent 1a3df08aca
commit 51998f706f
3 changed files with 22 additions and 15 deletions

View File

@ -16,10 +16,13 @@ import (
var _ compiler.Compiler = &CompilerV2{}
type CompilerV2 struct {
Dir string
Dir string
Taskvars taskfile.Vars
TaskfileVars taskfile.Vars
Expansions int
Logger *logger.Logger
dynamicCache map[string]string
@ -34,14 +37,11 @@ type CompilerV2 struct {
// 5. Environment variables
func (c *CompilerV2) GetVariables(t *taskfile.Task, call taskfile.Call) (taskfile.Vars, error) {
vr := varResolver{c: c, vars: compiler.GetEnviron()}
vr.merge(c.Taskvars)
vr.merge(c.Taskvars)
vr.merge(c.TaskfileVars)
vr.merge(c.TaskfileVars)
vr.merge(call.Vars)
vr.merge(call.Vars)
vr.merge(t.Vars)
vr.merge(t.Vars)
for _, vars := range []taskfile.Vars{c.Taskvars, c.TaskfileVars, call.Vars, t.Vars} {
for i := 0; i < c.Expansions; i++ {
vr.merge(vars)
}
}
return vr.vars, vr.err
}

View File

@ -2,9 +2,10 @@ package taskfile
// Taskfile represents a Taskfile.yml
type Taskfile struct {
Version string
Vars Vars
Tasks Tasks
Version string
Expansions int
Vars Vars
Tasks Tasks
}
// UnmarshalYAML implements yaml.Unmarshaler interface
@ -15,15 +16,20 @@ func (tf *Taskfile) UnmarshalYAML(unmarshal func(interface{}) error) error {
}
var taskfile struct {
Version string
Vars Vars
Tasks Tasks
Version string
Expansions int
Vars Vars
Tasks Tasks
}
if err := unmarshal(&taskfile); err != nil {
return err
}
tf.Version = taskfile.Version
tf.Expansions = taskfile.Expansions
tf.Vars = taskfile.Vars
tf.Tasks = taskfile.Tasks
if tf.Expansions <= 0 {
tf.Expansions = 2
}
return nil
}

View File

@ -112,6 +112,7 @@ func (e *Executor) setup() error {
Dir: e.Dir,
Taskvars: e.taskvars,
TaskfileVars: e.Taskfile.Vars,
Expansions: e.Taskfile.Expansions,
Logger: e.Logger,
}