Skip to content

Commit b9a563f

Browse files
committed
feat(secrets): allow diffing stringData sections of secrets as well as data sections
1 parent 49135f1 commit b9a563f

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

diff/diff.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package diff
22

33
import (
44
"bytes"
5+
"encoding/base64"
56
"fmt"
67
"io"
78
"math"
@@ -163,11 +164,29 @@ func redactSecrets(old, new *manifest.MappingResult) {
163164
if err := yaml.NewYAMLToJSONDecoder(bytes.NewBufferString(old.Content)).Decode(&oldSecret); err != nil {
164165
old.Content = fmt.Sprintf("Error parsing old secret: %s", err)
165166
}
167+
if oldSecret.Data == nil {
168+
oldSecret.Data = make(map[string][]byte, len(oldSecret.StringData))
169+
}
170+
for k, v := range oldSecret.StringData {
171+
data := []byte(v)
172+
dst := make([]byte, base64.StdEncoding.EncodedLen(len(data)))
173+
base64.StdEncoding.Encode(dst, data)
174+
oldSecret.Data[k] = dst
175+
}
166176
}
167177
if new != nil {
168178
if err := yaml.NewYAMLToJSONDecoder(bytes.NewBufferString(new.Content)).Decode(&newSecret); err != nil {
169179
new.Content = fmt.Sprintf("Error parsing new secret: %s", err)
170180
}
181+
if newSecret.Data == nil {
182+
newSecret.Data = make(map[string][]byte, len(newSecret.StringData))
183+
}
184+
for k, v := range newSecret.StringData {
185+
data := []byte(v)
186+
dst := make([]byte, base64.StdEncoding.EncodedLen(len(data)))
187+
base64.StdEncoding.Encode(dst, data)
188+
newSecret.Data[k] = dst
189+
}
171190
}
172191
if old != nil {
173192
oldSecret.StringData = make(map[string]string, len(oldSecret.Data))

0 commit comments

Comments
 (0)