@@ -2,6 +2,7 @@ package parser
2
2
3
3
import (
4
4
"encoding/json"
5
+ "fmt"
5
6
6
7
devfileCtx "github.com/devfile/library/pkg/devfile/parser/context"
7
8
"github.com/devfile/library/pkg/devfile/parser/data"
@@ -63,7 +64,7 @@ func Parse(path string) (d DevfileObj, err error) {
63
64
return parseDevfile (d , true )
64
65
}
65
66
66
- // ParseRawDevfile populates the raw devfile data witout overring and merging
67
+ // ParseRawDevfile populates the raw devfile data without overriding and merging
67
68
func ParseRawDevfile (path string ) (d DevfileObj , err error ) {
68
69
// NewDevfileCtx
69
70
d .Ctx = devfileCtx .NewDevfileCtx (path )
@@ -108,15 +109,20 @@ func ParseFromData(data []byte) (d DevfileObj, err error) {
108
109
func parseParentAndPlugin (d DevfileObj ) (err error ) {
109
110
flattenedParent := & v1.DevWorkspaceTemplateSpecContent {}
110
111
if d .Data .GetParent () != nil {
111
- if ! reflect .DeepEqual (d .Data .GetParent (), & v1.Parent {}) && d .Data .GetParent ().Uri != "" {
112
- parent := d .Data .GetParent ()
112
+ if ! reflect .DeepEqual (d .Data .GetParent (), & v1.Parent {}) {
113
113
114
- parentData , err := ParseFromURL (parent .Uri )
115
- if err != nil {
116
- return err
114
+ parent := d .Data .GetParent ()
115
+ var parentDevfileObj DevfileObj
116
+ if d .Data .GetParent ().Uri != "" {
117
+ parentDevfileObj , err = ParseFromURL (parent .Uri )
118
+ if err != nil {
119
+ return err
120
+ }
121
+ } else {
122
+ return fmt .Errorf ("parent URI undefined, currently only URI is suppported" )
117
123
}
118
124
119
- parentWorkspaceContent := parentData .Data .GetDevfileWorkspace ()
125
+ parentWorkspaceContent := parentDevfileObj .Data .GetDevfileWorkspace ()
120
126
if ! reflect .DeepEqual (parent .ParentOverrides , v1.ParentOverrides {}) {
121
127
flattenedParent , err = apiOverride .OverrideDevWorkspaceTemplateSpec (parentWorkspaceContent , parent .ParentOverrides )
122
128
if err != nil {
@@ -129,33 +135,35 @@ func parseParentAndPlugin(d DevfileObj) (err error) {
129
135
klog .V (4 ).Infof ("adding data of devfile with URI: %v" , parent .Uri )
130
136
}
131
137
}
132
- plugins := []* v1.DevWorkspaceTemplateSpecContent {}
138
+ flattenedPlugins := []* v1.DevWorkspaceTemplateSpecContent {}
133
139
components , err := d .Data .GetComponents (common.DevfileOptions {})
134
140
if err != nil {
135
141
return err
136
142
}
137
143
for _ , component := range components {
138
144
if component .Plugin != nil && ! reflect .DeepEqual (component .Plugin , & v1.PluginComponent {}) {
139
145
plugin := component .Plugin
140
- var pluginData DevfileObj
146
+ var pluginDevfileObj DevfileObj
141
147
if plugin .Uri != "" {
142
- pluginData , err = ParseFromURL (plugin .Uri )
148
+ pluginDevfileObj , err = ParseFromURL (plugin .Uri )
143
149
if err != nil {
144
150
return err
145
151
}
152
+ } else {
153
+ return fmt .Errorf ("parent URI undefined, currently only URI is suppported" )
146
154
}
147
- pluginWorkspaceContent := pluginData .Data .GetDevfileWorkspace ()
148
- result := pluginWorkspaceContent
155
+ pluginWorkspaceContent := pluginDevfileObj .Data .GetDevfileWorkspace ()
156
+ flattenedPlugin := pluginWorkspaceContent
149
157
if ! reflect .DeepEqual (plugin .PluginOverrides , v1.PluginOverrides {}) {
150
- result , err = apiOverride .OverrideDevWorkspaceTemplateSpec (pluginWorkspaceContent , plugin .PluginOverrides )
158
+ flattenedPlugin , err = apiOverride .OverrideDevWorkspaceTemplateSpec (pluginWorkspaceContent , plugin .PluginOverrides )
151
159
if err != nil {
152
160
return err
153
161
}
154
162
}
155
- plugins = append (plugins , result )
163
+ flattenedPlugins = append (flattenedPlugins , flattenedPlugin )
156
164
}
157
165
}
158
- mergedContent , err := apiOverride .MergeDevWorkspaceTemplateSpec (d .Data .GetDevfileWorkspace (), flattenedParent , plugins ... )
166
+ mergedContent , err := apiOverride .MergeDevWorkspaceTemplateSpec (d .Data .GetDevfileWorkspace (), flattenedParent , flattenedPlugins ... )
159
167
if err != nil {
160
168
return err
161
169
}
0 commit comments