Feature - YAML search - find properties with a specific scalar value #4657
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What's changed?
I have changed the org.openrewrite.yaml.search.FindProperty search recipe to allow searching for yaml properties which have a specific scalar value. The new reciped parameter propertyValue is OPTIONAL which ensures downwards-compatibility.
What's your motivation?
I need this search functionality for a specific use case I am working on.
I want to alter a yamle file if the specified yaml key does have a certain value. The search recipe can act as a Precondition here.
Anything in particular you'd like reviewers to focus on?
I thried to create a dedicated org.openrewrite.yaml.search.FindPropertyWithValue recipe inheriting from org.openrewrite.yaml.search.FindProperty, but recipes are final and do not allow for inheritance. This is why I added an optional parameter to the existing recipe instead.
Also I did not find out how to test a negative search case. I marked hence the negative test as
@Disabled
.Have you considered any alternatives or workarounds?
Alternative: Use SourceGraph to find the repos having the specified Yaml condition. Well then I can also run the change with Sourcegraph.
Any additional context
I love the generic yaml stuff you have
Checklist