in pkg/argocd/argoapplicationset_manager.go [461:491]
func processGeneratorListElements(stageName string, generator *argoApi.ApplicationSetGenerator, stageGenerators map[string]apiextensionsv1.JSON) (bool, error) {
n := 0
for _, rawel := range generator.List.Elements {
el := &generatorElement{}
if err := json.Unmarshal(rawel.Raw, el); err != nil {
return false, fmt.Errorf("failed to unmarshal generator element: %w", err)
}
key := fmt.Sprintf("%s-%s", el.Codebase, el.Stage)
_, ok := stageGenerators[key]
if ok {
delete(stageGenerators, key)
}
if el.Stage != stageName || (el.Stage == stageName && ok) {
generator.List.Elements[n] = rawel
n++
}
}
if len(generator.List.Elements) != n || len(stageGenerators) > 0 {
generator.List.Elements = generator.List.Elements[:n]
generator.List.Elements = append(generator.List.Elements, maps.Values(stageGenerators)...)
return true, nil
}
return false, nil
}