(call *Call, evaluateShVars bool)
| 90 | } |
| 91 | |
| 92 | func (e *Executor) compiledTask(call *Call, evaluateShVars bool) (*ast.Task, error) { |
| 93 | origTask, err := e.GetTask(call) |
| 94 | if err != nil { |
| 95 | return nil, err |
| 96 | } |
| 97 | |
| 98 | var vars *ast.Vars |
| 99 | if evaluateShVars { |
| 100 | vars, err = e.Compiler.GetVariables(origTask, call) |
| 101 | } else { |
| 102 | vars, err = e.Compiler.FastGetVariables(origTask, call) |
| 103 | } |
| 104 | if err != nil { |
| 105 | return nil, err |
| 106 | } |
| 107 | fullName := origTask.Task |
| 108 | if matches, exists := vars.Get("MATCH"); exists { |
| 109 | for _, match := range matches.Value.([]string) { |
| 110 | fullName = strings.Replace(fullName, "*", match, 1) |
| 111 | } |
| 112 | } |
| 113 | |
| 114 | cache := &templater.Cache{Vars: vars} |
| 115 | |
| 116 | // Resolve enum refs only when dynamic variables have been evaluated, |
| 117 | // since enum refs may depend on shell-derived variables (e.g. fromJson) |
| 118 | requires := origTask.Requires |
| 119 | if evaluateShVars { |
| 120 | requires = origTask.Requires.DeepCopy() |
| 121 | if err := resolveEnumRefs(requires, cache); err != nil { |
| 122 | return nil, err |
| 123 | } |
| 124 | } |
| 125 | |
| 126 | gitignore := e.shouldTaskUseGitignore(origTask) |
| 127 | |
| 128 | new := ast.Task{ |
| 129 | Task: origTask.Task, |
| 130 | Label: templater.Replace(origTask.Label, cache), |
| 131 | Desc: templater.Replace(origTask.Desc, cache), |
| 132 | Prompt: templater.Replace(origTask.Prompt, cache), |
| 133 | Summary: templater.Replace(origTask.Summary, cache), |
| 134 | Aliases: origTask.Aliases, |
| 135 | Sources: templater.ReplaceGlobs(origTask.Sources, cache), |
| 136 | Generates: templater.ReplaceGlobs(origTask.Generates, cache), |
| 137 | Dir: templater.Replace(origTask.Dir, cache), |
| 138 | Set: origTask.Set, |
| 139 | Shopt: origTask.Shopt, |
| 140 | Vars: vars, |
| 141 | Env: nil, |
| 142 | Dotenv: templater.Replace(origTask.Dotenv, cache), |
| 143 | Silent: deepcopy.Scalar(origTask.Silent), |
| 144 | UseGitignore: &gitignore, |
| 145 | Interactive: origTask.Interactive, |
| 146 | Internal: origTask.Internal, |
| 147 | Method: templater.Replace(origTask.Method, cache), |
| 148 | Prefix: templater.Replace(origTask.Prefix, cache), |
| 149 | IgnoreError: origTask.IgnoreError, |
no test coverage detected