aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-08-09 15:28:32 +0200
committerMichael Muré <batolettre@gmail.com>2018-08-09 15:28:32 +0200
commita0d509bcddf5ae0115c8679bbd81425696552b86 (patch)
tree1b48db8cf0cf897a4ae32e361d7c46704026c93a
parent34eea1f43c0c7f386b375441d8c3a15d9d3b7c99 (diff)
downloadgit-bug-a0d509bcddf5ae0115c8679bbd81425696552b86.tar.gz
termui: display status and label changes in show bug
-rw-r--r--bug/status.go11
-rw-r--r--termui/show_bug.go68
2 files changed, 79 insertions, 0 deletions
diff --git a/bug/status.go b/bug/status.go
index b1b066ff..0eee6cf1 100644
--- a/bug/status.go
+++ b/bug/status.go
@@ -18,3 +18,14 @@ func (s Status) String() string {
return "unknown status"
}
}
+
+func (s Status) Action() string {
+ switch s {
+ case OpenStatus:
+ return "opened"
+ case ClosedStatus:
+ return "closed"
+ default:
+ return "unknown status"
+ }
+}
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"
@@ -230,6 +232,72 @@ func (sb *showBug) renderMain(g *gocui.Gui, mainView *gocui.View) error {
}
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
+ }
+ fmt.Fprint(v, content)
+ y0 += lines + 2
}
}