MCPcopy
hub / github.com/apache/devlake / RunPluginSubTasks

Function RunPluginSubTasks

backend/core/runner/run_task.go:176–349  ·  view source on GitHub ↗

RunPluginSubTasks FIXME ...

(
	ctx gocontext.Context,
	basicRes context.BasicRes,
	task *models.Task,
	pluginTask plugin.PluginTask,
	progress chan plugin.RunningProgress,
	syncPolicy *models.SyncPolicy,
)

Source from the content-addressed store, hash-verified

174
175// RunPluginSubTasks FIXME ...
176func RunPluginSubTasks(
177 ctx gocontext.Context,
178 basicRes context.BasicRes,
179 task *models.Task,
180 pluginTask plugin.PluginTask,
181 progress chan plugin.RunningProgress,
182 syncPolicy *models.SyncPolicy,
183) errors.Error {
184 logger := basicRes.GetLogger()
185 logger.Info("start plugin")
186 // find out all possible subtasks this plugin can offer
187 subtaskMetas := pluginTask.SubTaskMetas()
188 subtasksFlag := make(map[string]bool)
189 for _, subtaskMeta := range subtaskMetas {
190 subtasksFlag[subtaskMeta.Name] = subtaskMeta.EnabledByDefault
191 }
192 /* subtasksFlag example
193 subtasksFlag := map[string]bool{
194 "collectProject": true,
195 "convertCommits": true,
196 ...
197 }
198 */
199
200 // user specifies what subtasks to run
201 if len(task.Subtasks) != 0 {
202 // decode user specified subtasks
203 var specifiedTasks []string
204 err := api.Decode(task.Subtasks, &specifiedTasks, nil)
205 if err != nil {
206 return errors.Default.Wrap(err, "subtasks could not be decoded")
207 }
208 if len(specifiedTasks) > 0 {
209 // first, disable all subtasks
210 for task := range subtasksFlag {
211 subtasksFlag[task] = false
212 }
213 // second, check specified subtasks is valid and enable them if so
214 for _, task := range specifiedTasks {
215 if _, ok := subtasksFlag[task]; ok {
216 subtasksFlag[task] = true
217 } else {
218 return errors.Default.New(fmt.Sprintf("subtask %s does not exist", task))
219 }
220 }
221 }
222 }
223
224 // 1. make sure `Collect` subtasks skip if `SkipCollectors` is true
225 // 2. make sure `Required` subtasks are always enabled
226 for _, subtaskMeta := range subtaskMetas {
227 if syncPolicy != nil && syncPolicy.SkipCollectors && strings.Contains(strings.ToLower(subtaskMeta.Name), "collect") {
228 subtasksFlag[subtaskMeta.Name] = false
229 }
230 if subtaskMeta.Required {
231 subtasksFlag[subtaskMeta.Name] = true
232 }
233 }

Callers 2

DirectRunFunction · 0.85
RunPluginTaskFunction · 0.85

Calls 15

SetSyncPolicyMethod · 0.95
SetDataMethod · 0.95
SubTaskContextMethod · 0.95
SetProgressMethod · 0.95
IncProgressMethod · 0.95
runSubtaskFunction · 0.85
WrapMethod · 0.80
GetLoggerMethod · 0.65
InfoMethod · 0.65
SubTaskMetasMethod · 0.65
NewMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected