MCPcopy
hub / github.com/go-task/task / compiledTask

Method compiledTask

variables.go:92–347  ·  view source on GitHub ↗
(call *Call, evaluateShVars bool)

Source from the content-addressed store, hash-verified

90}
91
92func (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,

Callers 2

CompiledTaskMethod · 0.95
FastCompiledTaskMethod · 0.95

Calls 15

GetTaskMethod · 0.95
GetMethod · 0.95
SetMethod · 0.95
ValueMethod · 0.95
KindMethod · 0.95
ResetCacheMethod · 0.95
ErrMethod · 0.95
ReplaceFunction · 0.92
ReplaceGlobsFunction · 0.92
ScalarFunction · 0.92
ExpandLiteralFunction · 0.92

Tested by

no test coverage detected