From e3f398d515c540b1e25fcd883eae55c61fabac0e Mon Sep 17 00:00:00 2001
From: gotbadger
Date: Fri, 25 Aug 2023 16:10:40 +0100
Subject: [PATCH] fix: improve output from show
---
pkg/commands/ignore.go | 29 ++++++++++++----------
pkg/util/ignore/ignore.go | 52 +++++++++++++++++++++++++--------------
2 files changed, 50 insertions(+), 31 deletions(-)
diff --git a/pkg/commands/ignore.go b/pkg/commands/ignore.go
index 613666e43..fa8b97925 100644
--- a/pkg/commands/ignore.go
+++ b/pkg/commands/ignore.go
@@ -68,16 +68,15 @@ $ bearer ignore show `,
cmd.Printf("Issue loading ignored fingerprints from bearer.ignore file: %s", err)
return nil
}
-
- selectedIgnoredFingerprint, ok := ignoredFingerprints[args[0]]
+ fingerprintId := args[0]
+ selectedIgnoredFingerprint, ok := ignoredFingerprints[fingerprintId]
if !ok {
- cmd.Printf("Ignored fingerprint '%s' was not found in bearer.ignore file\n", args[0])
+ cmd.Printf("Ignored fingerprint '%s' was not found in bearer.ignore file\n", fingerprintId)
return nil
}
-
- cmd.Printf("\nIgnored At: %s\nAuthor: %s\n", selectedIgnoredFingerprint.IgnoredAt, selectedIgnoredFingerprint.Author)
- cmd.Printf("Comment: %s\n\n", selectedIgnoredFingerprint.Comment)
-
+ cmd.Print("\n")
+ cmd.Print(ignore.DisplayIgnoredEntryTextString(fingerprintId, selectedIgnoredFingerprint))
+ cmd.Print("\n")
return nil
},
SilenceErrors: false,
@@ -107,24 +106,28 @@ $ bearer ignore add --author Mish --comment "Possible false positi
if err != nil {
return fmt.Errorf("flag error: %s", err)
}
-
+ fingerprintId := args[0]
+ fingerprintEntry := ignore.IgnoredFingerprint{
+ Author: options.IgnoreAddOptions.Author,
+ Comment: options.IgnoreAddOptions.Comment,
+ }
fingerprintsToIgnore := map[string]ignore.IgnoredFingerprint{
- args[0]: {
- Author: options.IgnoreAddOptions.Author,
- Comment: options.IgnoreAddOptions.Comment,
- },
+ fingerprintId: fingerprintEntry,
}
if err = ignore.AddToIgnoreFile(fingerprintsToIgnore, options.IgnoreAddOptions.Force); err != nil {
target := &ignore.DuplicateIgnoredFingerprintError{}
if errors.As(err, &target) {
// handle expected error (duplicate entry in bearer.ignore)
- cmd.Printf("%s\n", err.Error())
+ cmd.Printf("Error: %s\n", err.Error())
return nil
}
return err
}
+ cmd.Print("fingerprint added to bearer.ignore:\n\n")
+ cmd.Print(ignore.DisplayIgnoredEntryTextString(fingerprintId, fingerprintEntry))
+ cmd.Print("\n")
return nil
},
SilenceErrors: false,
diff --git a/pkg/util/ignore/ignore.go b/pkg/util/ignore/ignore.go
index 248039c6b..f0e0946d7 100644
--- a/pkg/util/ignore/ignore.go
+++ b/pkg/util/ignore/ignore.go
@@ -6,6 +6,8 @@ import (
"os"
"path/filepath"
"time"
+
+ "github.com/fatih/color"
)
type IgnoredFingerprint struct {
@@ -22,6 +24,34 @@ func (f *DuplicateIgnoredFingerprintError) Error() string {
return f.Err.Error()
}
+var bold = color.New(color.Bold).SprintFunc()
+var morePrefix = color.HiBlackString("├─ ")
+var lastPrefix = color.HiBlackString("└─ ")
+
+func DisplayIgnoredEntryTextString(fingerprintId string, entry IgnoredFingerprint) string {
+ prefix := morePrefix
+ result := fmt.Sprintf(bold(color.HiBlueString("%s \n")), fingerprintId)
+
+ if entry.Author == "" && entry.Comment == "" {
+ prefix = lastPrefix
+ }
+ result += fmt.Sprintf("%sIgnored At: %s\n", prefix, bold(entry.IgnoredAt))
+
+ if entry.Author != "" {
+ if entry.Comment == "" {
+ prefix = lastPrefix
+ }
+
+ result += fmt.Sprintf("%sAuthor: %s\n", prefix, bold(entry.Author))
+ }
+
+ if entry.Comment != "" {
+ result += fmt.Sprintf("%sComment: %s\n", lastPrefix, bold(entry.Comment))
+ }
+
+ return result
+}
+
func GetIgnoredFingerprints(target *string) (ignoredFingerprints map[string]IgnoredFingerprint, err error) {
fingerprints, err := readIgnoreFile(target)
if err != nil {
@@ -43,11 +73,11 @@ func AddToIgnoreFile(fingerprintsToIgnore map[string]IgnoredFingerprint, force b
for key, value := range fingerprintsToIgnore {
if !force {
- if existingIgnoredFingerprint, ok := existingIgnoredFingerprints[key]; ok {
+ if _, ok := existingIgnoredFingerprints[key]; ok {
error := fmt.Errorf(
- "fingerprint %s already exists in bearer.ignore file%s. To overwrite this entry, use --force",
+ "fingerprint '%s' already exists in bearer.ignore file. To view this entry run:\n\n$ bearer ignore show %s\n\nTo overwrite this entry, use --force",
+ key,
key,
- fingerprintDetailsStr(existingIgnoredFingerprint),
)
return &DuplicateIgnoredFingerprintError{
Err: error,
@@ -59,7 +89,7 @@ func AddToIgnoreFile(fingerprintsToIgnore map[string]IgnoredFingerprint, force b
existingIgnoredFingerprints[key] = value
}
- data, err := json.Marshal(existingIgnoredFingerprints)
+ data, err := json.MarshalIndent(existingIgnoredFingerprints, "", " ")
if err != nil {
// failed to marshall data
return err
@@ -92,17 +122,3 @@ func readIgnoreFile(target *string) (payload map[string]IgnoredFingerprint, err
err = json.Unmarshal(content, &payload)
return payload, err
}
-
-func fingerprintDetailsStr(ignoredFingerprint IgnoredFingerprint) (fingerprintDetailsStr string) {
- if len(ignoredFingerprint.Author) > 0 {
- fingerprintDetailsStr += fmt.Sprintf(" with author %s", ignoredFingerprint.Author)
- if len(ignoredFingerprint.Comment) > 0 {
- fingerprintDetailsStr += fmt.Sprintf("and comment %s", ignoredFingerprint.Comment)
- }
- } else {
- if len(ignoredFingerprint.Comment) > 0 {
- fingerprintDetailsStr += fmt.Sprintf(" with comment %s", ignoredFingerprint.Comment)
- }
- }
- return fingerprintDetailsStr
-}