in pkg/trait/builder.go [653:691]
func filter(tasks []v1.Task, filterTasks []string) ([]v1.Task, error) {
var filteredTasks []v1.Task
for _, f := range filterTasks {
found := false
for _, t := range tasks {
switch {
case t.Builder != nil && t.Builder.Name == f:
filteredTasks = append(filteredTasks, t)
found = true
case t.Custom != nil && t.Custom.Name == f:
filteredTasks = append(filteredTasks, t)
found = true
case t.Package != nil && t.Package.Name == f:
filteredTasks = append(filteredTasks, t)
found = true
case t.Spectrum != nil && t.Spectrum.Name == f:
filteredTasks = append(filteredTasks, t)
found = true
case t.S2i != nil && t.S2i.Name == f:
filteredTasks = append(filteredTasks, t)
found = true
case t.Jib != nil && t.Jib.Name == f:
filteredTasks = append(filteredTasks, t)
found = true
}
}
if !found {
// If we reach this point it means no tasks exists for the name
return nil, fmt.Errorf("no task exist for %s name", f)
}
}
// make sure the last task is either a publishing task or a custom task
if len(filteredTasks) == 0 || !publishingOrUserTask(filteredTasks[len(filteredTasks)-1]) {
return nil, fmt.Errorf("last pipeline task is not a publishing or a user task")
}
return filteredTasks, nil
}