refactored to rely on yaml.Node during parsing#854
Open
ndeloof wants to merge 3 commits intocompose-spec:mainfrom
Open
refactored to rely on yaml.Node during parsing#854ndeloof wants to merge 3 commits intocompose-spec:mainfrom
ndeloof wants to merge 3 commits intocompose-spec:mainfrom
Conversation
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
93cfb69 to
855edb9
Compare
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
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.
The existing compose file loading pipeline uses
map[string]anyas its intermediate representation, which loses YAML source location information (file, line number). This makes it impossible to produce precise error messages pointing to the offending line in the source file.It also forces interpolation and path resolution to happen eagerly, with a single global environment, even though include directives can specify per-file
env_fileandproject_directory.This PR introduces a new loading path to build a
ComposeModelbacked by raw*yaml.Nodetrees. Each node is associated with aNodeContextthat captures the environment variables, working directory, and source filename from its originating file. All normalization (interpolation, type casting, path resolution) is deferred untilResolve()is called.This also allows to get rid of mapstructure dependency an rely on
UnmarshallYAMLfunction to cover type conversions