MCPcopy
hub / github.com/databus23/helm-diff / parseContent

Function parseContent

manifest/parse.go:150–217  ·  view source on GitHub ↗
(content []byte, defaultNamespace string, normalizeManifests bool, excludedHooks ...string)

Source from the content-addressed store, hash-verified

148}
149
150func parseContent(content []byte, defaultNamespace string, normalizeManifests bool, excludedHooks ...string) ([]*MappingResult, error) {
151 var parsedMetadata metadata
152 if err := yaml.Unmarshal(content, &parsedMetadata); err != nil {
153 log.Fatalf("YAML unmarshal error: %s\nCan't unmarshal %s", err, content)
154 }
155
156 // Skip content without any metadata. It is probably a template that
157 // only contains comments in the current state.
158 if parsedMetadata.APIVersion == "" && parsedMetadata.Kind == "" {
159 return nil, nil
160 }
161
162 if strings.HasSuffix(parsedMetadata.Kind, "List") {
163 type ListV1 struct {
164 Items []yaml.MapSlice `yaml:"items"`
165 }
166
167 var list ListV1
168
169 if err := yaml.Unmarshal(content, &list); err != nil {
170 log.Fatalf("YAML unmarshal error: %s\nCan't unmarshal %s", err, content)
171 }
172
173 var result []*MappingResult
174
175 for _, item := range list.Items {
176 subcontent, err := yaml.Marshal(item)
177 if err != nil {
178 log.Printf("YAML marshal error: %s\nCan't marshal %v", err, item)
179 }
180
181 subs, err := parseContent(subcontent, defaultNamespace, normalizeManifests, excludedHooks...)
182 if err != nil {
183 return nil, fmt.Errorf("Parsing YAML list item: %w", err)
184 }
185
186 result = append(result, subs...)
187 }
188
189 return result, nil
190 }
191
192 if normalizeManifests {
193 var normalizeErr error
194 content, normalizeErr = normalizeContent(content)
195 if normalizeErr != nil {
196 log.Fatalf("Error normalizing manifests: %v", normalizeErr)
197 }
198 }
199
200 if isHook(parsedMetadata, excludedHooks...) {
201 return nil, nil
202 }
203
204 if parsedMetadata.Metadata.Namespace == "" {
205 parsedMetadata.Metadata.Namespace = defaultNamespace
206 }
207

Callers 2

ParseFunction · 0.85
ParseObjectFunction · 0.85

Calls 3

StringMethod · 0.95
normalizeContentFunction · 0.85
isHookFunction · 0.85

Tested by

no test coverage detected