run interpolation after merge, but for required attributes#651
Merged
ndeloof merged 1 commit intocompose-spec:mainfrom Jul 8, 2024
Merged
run interpolation after merge, but for required attributes#651ndeloof merged 1 commit intocompose-spec:mainfrom
ndeloof merged 1 commit intocompose-spec:mainfrom
Conversation
Collaborator
Author
|
see #652 |
ce8a6c6 to
ff5c904
Compare
Collaborator
Author
|
checked by docker/compose#11961 |
ff5c904 to
8fb901d
Compare
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
8fb901d to
d7d9f94
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
interpolation is ran after merge, so that a required missing variable, which is actually overridden, won't produce an error.
This is an alternative implementation based on #644:
This PR always run interpolation applying
extendsandinclude, but only on the relevant configuration structures. Global interpolation eventually takes places after mergeThis has a minor impact on the loading process and schema: as we don't interpolate, we can't rely on a canonical model to enforce unicity after compose file merge, and doing so compose-spec schema uniqueItem constraint must be removed. This one anyway is just a syntactic sugar AFAICT that has no real impact on usability. From an IDE point of view, while obvious duplicate can be detected by schema, the non-obvious ones (like
ports: ["8080", "${PORT}"]can't, and we still have to implement unicity check by the codeclose docker/compose#11925