schema: Introduce CoreModuleSchemaForConstraint #129
Merged
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.
This is to enable hashicorp/terraform-ls#993
Implementation Notes
I chose to pull all known versions and generate a list of versions which we can check the constraints against. They are re-generatable at any time via
go generate ./schema
. This is more or less in-line with our longer term plans to have TF Core/CLI expose machine-readable schemas for core and publishing it somewhere for each version.While working on this I also realised there's a few edge cases we didn't previously cover, which became more obvious now:
For both of these edge cases we return an error (which is what we did before), but given that we also now expose the lowest and highest (supported) version, we allow LS to pick either of those based on "proximity" to the version or constraint - e.g. if the user is running
0.5.0
we pick0.12.0
as that's closest. If they run (hypothetical)1.5.0
, we pick1.3.0
.