func ComputeBreakingChanges()

in tools/diff-processor/breaking_changes/breaking_changes.go [26:55]


func ComputeBreakingChanges(schemaDiff diff.SchemaDiff) []BreakingChange {
	var breakingChanges []BreakingChange
	for resource, resourceDiff := range schemaDiff {
		for _, rule := range ResourceConfigDiffRules {
			for _, message := range rule.Messages(resource, resourceDiff.ResourceConfig) {
				breakingChanges = append(breakingChanges, NewBreakingChange(message, rule.Identifier))
			}
		}

		// If the resource was added or removed, don't check rules that include field information.
		if resourceDiff.ResourceConfig.Old == nil || resourceDiff.ResourceConfig.New == nil {
			continue
		}

		for _, rule := range ResourceDiffRules {
			for _, message := range rule.Messages(resource, resourceDiff) {
				breakingChanges = append(breakingChanges, NewBreakingChange(message, rule.Identifier))
			}
		}

		for field, fieldDiff := range resourceDiff.Fields {
			for _, rule := range FieldDiffRules {
				for _, message := range rule.Messages(resource, field, fieldDiff) {
					breakingChanges = append(breakingChanges, NewBreakingChange(message, rule.Identifier))
				}
			}
		}
	}
	return breakingChanges
}