Skip to content

Commit

Permalink
fix: improve output from show
Browse files Browse the repository at this point in the history
  • Loading branch information
gotbadger committed Aug 25, 2023
1 parent 9d3698f commit 612a02a
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 31 deletions.
29 changes: 16 additions & 13 deletions pkg/commands/ignore.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,16 +46,15 @@ $ bearer ignore show <fingerprint>`,
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,
Expand Down Expand Up @@ -86,24 +85,28 @@ $ bearer ignore add <fingerprint> --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,
Expand Down
52 changes: 34 additions & 18 deletions pkg/util/ignore/ignore.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ import (
"os"
"path/filepath"
"time"

"github.com/fatih/color"
)

type IgnoredFingerprint struct {
Expand All @@ -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 {
Expand All @@ -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,
Expand All @@ -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
Expand Down Expand Up @@ -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
}

0 comments on commit 612a02a

Please sign in to comment.