in tools/diff-processor/detector/detector.go [56:92]
func getChangedFieldsFromSchemaDiff(schemaDiff diff.SchemaDiff) map[string]ResourceChanges {
changedFields := make(map[string]ResourceChanges)
for resource, resourceDiff := range schemaDiff {
resourceChanges := make(ResourceChanges)
for field, fieldDiff := range resourceDiff.Fields {
if field == "project" {
// Skip the project field.
continue
}
if strings.Contains(resource, "iam") && field == "condition" {
// Skip the condition field of iam resources because some iam resources do not support it.
continue
}
if fieldDiff.New == nil {
// Skip deleted fields.
continue
}
if fieldDiff.New.Computed && !fieldDiff.New.Optional {
// Skip output-only fields.
continue
}
if _, ok := fieldDiff.New.Elem.(*schema.Resource); ok {
// Skip parent fields.
continue
}
if fieldDiff.Old == nil {
resourceChanges[field] = &Field{Added: true}
} else {
resourceChanges[field] = &Field{Changed: true}
}
}
if len(resourceChanges) > 0 {
changedFields[resource] = resourceChanges
}
}
return changedFields
}