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
}