From a0d509bcddf5ae0115c8679bbd81425696552b86 Mon Sep 17 00:00:00 2001 From: Michael Muré Date: Thu, 9 Aug 2018 15:28:32 +0200 Subject: termui: display status and label changes in show bug --- termui/show_bug.go | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) (limited to 'termui') diff --git a/termui/show_bug.go b/termui/show_bug.go index d6644b1d..4f5373d6 100644 --- a/termui/show_bug.go +++ b/termui/show_bug.go @@ -1,7 +1,9 @@ package termui import ( + "bytes" "fmt" + "strings" "github.com/MichaelMure/git-bug/bug/operations" "github.com/MichaelMure/git-bug/cache" @@ -224,6 +226,72 @@ func (sb *showBug) renderMain(g *gocui.Gui, mainView *gocui.View) error { ) content, lines := util.TextWrap(content, maxX) + v, err := sb.createOpView(g, viewName, x0, y0, maxX+1, lines, true) + if err != nil { + return err + } + fmt.Fprint(v, content) + y0 += lines + 2 + + case operations.SetStatusOperation: + setStatus := op.(operations.SetStatusOperation) + + content := fmt.Sprintf("%s %s the bug on %s", + util.Magenta(setStatus.Author.Name), + util.Bold(setStatus.Status.Action()), + setStatus.Time().Format(timeLayout), + ) + content, lines := util.TextWrap(content, maxX) + + v, err := sb.createOpView(g, viewName, x0, y0, maxX+1, lines, true) + if err != nil { + return err + } + fmt.Fprint(v, content) + y0 += lines + 2 + + case operations.LabelChangeOperation: + labelChange := op.(operations.LabelChangeOperation) + + var added []string + for _, label := range labelChange.Added { + added = append(added, util.Bold("\""+label+"\"")) + } + + var removed []string + for _, label := range labelChange.Removed { + removed = append(removed, util.Bold("\""+label+"\"")) + } + + var action bytes.Buffer + + if len(added) > 0 { + action.WriteString("added ") + action.WriteString(strings.Join(added, " ")) + + if len(removed) > 0 { + action.WriteString(" and ") + } + } + + if len(removed) > 0 { + action.WriteString("removed ") + action.WriteString(strings.Join(removed, " ")) + } + + if len(added)+len(removed) > 1 { + action.WriteString(" labels") + } else { + action.WriteString(" label") + } + + content := fmt.Sprintf("%s %s on %s", + util.Magenta(labelChange.Author.Name), + action.String(), + labelChange.Time().Format(timeLayout), + ) + content, lines := util.TextWrap(content, maxX) + v, err := sb.createOpView(g, viewName, x0, y0, maxX+1, lines, true) if err != nil { return err -- cgit