From 01de36670316351eef6be5a304b130809299eee8 Mon Sep 17 00:00:00 2001 From: Christian Rocha Date: Mon, 20 Jul 2020 18:16:12 -0400 Subject: [PATCH] Truncate long lines in `stash get` command + cosmetic stuff --- stash.go | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/stash.go b/stash.go index 91457cf..ffb3e87 100644 --- a/stash.go +++ b/stash.go @@ -6,9 +6,12 @@ import ( "log" "os" "strconv" + "strings" "github.com/charmbracelet/charm" + "github.com/mattn/go-runewidth" "github.com/spf13/cobra" + "golang.org/x/crypto/ssh/terminal" ) var ( @@ -51,13 +54,31 @@ var ( cc := initCharmClient() mds, err := cc.GetStash(1) if err != nil { - return fmt.Errorf("error getting stash") + return fmt.Errorf("error getting stash: " + err.Error()) } - fmt.Println("ID\tNote") - fmt.Println("--\t----") + + const gap = " " + const gapWidth = len(gap) + numDigits := len(fmt.Sprintf("%d", len(mds))) + termWidth, _, err := terminal.GetSize(int(os.Stdout.Fd())) + if err != nil { + return err + } + noteColWidth := termWidth - numDigits - gapWidth + + // Header + fmt.Println("ID" + gap + "Note") + fmt.Println(strings.Repeat("─", numDigits) + gap + strings.Repeat("─", noteColWidth)) + + // Body for _, md := range mds { - fmt.Printf("%d\t%s\n", md.ID, md.Note) + fmt.Printf("%"+fmt.Sprintf("%d", numDigits)+".d%s%s\n", + md.ID, + gap, + runewidth.Truncate(md.Note, noteColWidth, "…"), + ) } + return nil }, }