MCPcopy Index your code
hub / github.com/databus23/helm-diff / calculateFieldChanges

Function calculateFieldChanges

diff/structured.go:156–190  ·  view source on GitHub ↗
(oldJSON, newJSON []byte)

Source from the content-addressed store, hash-verified

154}
155
156func calculateFieldChanges(oldJSON, newJSON []byte) ([]FieldChange, error) {
157 patchBytes, err := jsonpatch.CreateMergePatch(oldJSON, newJSON)
158 if err != nil {
159 return nil, err
160 }
161 trimmed := bytes.TrimSpace(patchBytes)
162 if len(trimmed) == 0 || bytes.Equal(trimmed, []byte("{}")) {
163 return nil, nil
164 }
165
166 var patch interface{}
167 if err := json.Unmarshal(patchBytes, &patch); err != nil {
168 return nil, err
169 }
170
171 var oldDoc interface{}
172 if len(oldJSON) > 0 {
173 if err := json.Unmarshal(oldJSON, &oldDoc); err != nil {
174 return nil, err
175 }
176 }
177
178 var newDoc interface{}
179 if len(newJSON) > 0 {
180 if err := json.Unmarshal(newJSON, &newDoc); err != nil {
181 return nil, err
182 }
183 }
184
185 var changes []FieldChange
186 if err := walkPatch(&changes, nil, patch, oldDoc, newDoc); err != nil {
187 return nil, err
188 }
189 return changes, nil
190}
191
192func walkPatch(changes *[]FieldChange, tokens []string, patchNode, oldNode, newNode interface{}) error {
193 switch typed := patchNode.(type) {

Callers 1

buildStructuredEntryFunction · 0.85

Calls 1

walkPatchFunction · 0.85

Tested by

no test coverage detected