func()

in alzlib.go [781:802]


func (az *AlzLib) generateArchitectures(res *processor.Result) error {
	for name, libArch := range res.LibArchitectures {
		if _, exists := az.architectures[name]; exists && !az.Options.AllowOverwrite {
			return fmt.Errorf("Alzlib.generateArchitectures: error processing architecture %s - it already exists in the library", name)
		}
		validParents := mapset.NewThreadUnsafeSet[string]()
		for _, mg := range libArch.ManagementGroups {
			validParents.Add(mg.Id)
		}
		for _, mg := range libArch.ManagementGroups {
			if mg.ParentId != nil && !validParents.Contains(*mg.ParentId) {
				return fmt.Errorf("Alzlib.generateArchitectures: error processing architecture %s - management group %s has invalid parent %s", name, mg.Id, *mg.ParentId)
			}
		}
		arch := NewArchitecture(name, az)
		if err := architectureRecursion(nil, libArch, arch, az, 0); err != nil {
			return fmt.Errorf("Alzlib.generateArchitectures: error processing architecture %s: %w", name, err)
		}
		az.architectures[name] = arch
	}
	return nil
}