func processGeneratorListElements()

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
}