Skip to content

Commit fb2cb51

Browse files
Fix talismanrc suggestion in non-interactive mode
1 parent b8eb940 commit fb2cb51

File tree

3 files changed

+56
-3
lines changed

3 files changed

+56
-3
lines changed

detector/helpers/detection_results.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,13 +337,12 @@ func getUserConfirmation(configs []talismanrc.IgnoreConfig, promptContext prompt
337337
}
338338

339339
func printTalismanIgnoreSuggestion(entriesToAdd []talismanrc.IgnoreConfig) {
340-
talismanRC := &talismanrc.TalismanRC{IgnoreConfigs: entriesToAdd}
341-
ignoreEntries, _ := yaml.Marshal(talismanRC)
340+
ignoreEntries := talismanrc.SuggestRCFor(entriesToAdd)
342341
suggestString := fmt.Sprintf("\n\x1b[33mIf you are absolutely sure that you want to ignore the " +
343342
"above files from talisman detectors, consider pasting the following format in .talismanrc file" +
344343
" in the project root\x1b[0m\n")
345344
fmt.Println(suggestString)
346-
fmt.Println(string(ignoreEntries))
345+
fmt.Println(ignoreEntries)
347346
}
348347

349348
func confirm(config talismanrc.IgnoreConfig, promptContext prompt.PromptContext) bool {

talismanrc/talismanrc.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,22 @@ type persistedRC struct {
5252
Version string `default:"1.0" yaml:"version"`
5353
}
5454

55+
func SuggestRCFor(configs []IgnoreConfig) string {
56+
fileIgnoreConfigs := []FileIgnoreConfig{}
57+
for _, config := range configs {
58+
fIC, ok := config.(*FileIgnoreConfig)
59+
if ok {
60+
fileIgnoreConfigs = append(fileIgnoreConfigs, *fIC)
61+
} else {
62+
logr.Debugf("Ignoring unknown IgnoreConfig : %#v", config)
63+
}
64+
}
65+
pRC := persistedRC{FileIgnoreConfig: fileIgnoreConfigs}
66+
result, _ := yaml.Marshal(pRC)
67+
68+
return string(result)
69+
}
70+
5571
//AcceptsAll returns true if there are no rules specified
5672
func (tRC *TalismanRC) AcceptsAll() bool {
5773
return len(tRC.effectiveRules("any-detector")) == 0

talismanrc/talismanrc_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,3 +263,41 @@ func TestScanFileIgnoreConfig_GetAllowedPatterns(t *testing.T) {
263263
assert.Equal(t, 1, len(allowedPatterns))
264264
assert.Regexp(t, allowedPatterns[0], "fileName")
265265
}
266+
267+
func TestSuggestRCFor(t *testing.T) {
268+
t.Run("should suggest proper RC when ignore configs are valid", func(t *testing.T) {
269+
fileIgnoreConfigs := []IgnoreConfig{
270+
&FileIgnoreConfig{
271+
FileName: "some_filename",
272+
Checksum: "some_checksum",
273+
},
274+
}
275+
expectedRC := `fileignoreconfig:
276+
- filename: some_filename
277+
checksum: some_checksum
278+
version: ""
279+
`
280+
str := SuggestRCFor(fileIgnoreConfigs)
281+
assert.Equal(t, expectedRC, str)
282+
})
283+
284+
t.Run("should ignore invalid configs", func(t *testing.T) {
285+
fileIgnoreConfigs := []IgnoreConfig{
286+
&FileIgnoreConfig{
287+
FileName: "some_filename",
288+
Checksum: "some_checksum",
289+
},
290+
&ScanFileIgnoreConfig{
291+
FileName: "some_other_filename",
292+
Checksums: []string{"some_other_checksum"},
293+
},
294+
}
295+
expectedRC := `fileignoreconfig:
296+
- filename: some_filename
297+
checksum: some_checksum
298+
version: ""
299+
`
300+
str := SuggestRCFor(fileIgnoreConfigs)
301+
assert.Equal(t, expectedRC, str)
302+
})
303+
}

0 commit comments

Comments
 (0)