Merge pull request #91 from seeduvax/cmdShowFields

Michael Muré created

commands: show: change for a single valued --field flag

Change summary

commands/show.go                  | 32 ++++++++++++++++++++++++++++++++
doc/man/git-bug-show.1            |  4 ++++
doc/md/git-bug_show.md            |  3 ++-
misc/bash_completion/git-bug      |  3 +++
misc/git_hooks/prepare-commit-msg | 24 ++++++++++++++++++++++++
5 files changed, 65 insertions(+), 1 deletion(-)

Detailed changes

commands/show.go 🔗

@@ -12,6 +12,10 @@ import (
 	"github.com/spf13/cobra"
 )
 
+var (
+	showFieldsQuery string
+)
+
 func runShowBug(cmd *cobra.Command, args []string) error {
 	backend, err := cache.NewRepoCache(repo)
 	if err != nil {
@@ -33,6 +37,32 @@ func runShowBug(cmd *cobra.Command, args []string) error {
 
 	firstComment := snapshot.Comments[0]
 
+	if showFieldsQuery != "" {
+		switch showFieldsQuery {
+		case "author":
+			fmt.Printf("%s\n", firstComment.Author.DisplayName())
+		case "authorEmail":
+			fmt.Printf("%s\n", firstComment.Author.Email)
+		case "createTime":
+			fmt.Printf("%s\n", firstComment.FormatTime())
+		case "id":
+			fmt.Printf("%s\n", snapshot.Id())
+		case "labels":
+			var labels = make([]string, len(snapshot.Labels))
+			fmt.Printf("%s\n", strings.Join(labels, ", "))
+		case "shortId":
+			fmt.Printf("%s\n", snapshot.HumanId())
+		case "status":
+			fmt.Printf("%s\n", snapshot.Status)
+		case "title":
+			fmt.Printf("%s\n", snapshot.Title)
+		default:
+			return fmt.Errorf("\nUnsupported field: %s\n", showFieldsQuery)
+		}
+
+		return nil
+	}
+
 	// Header
 	fmt.Printf("[%s] %s %s\n\n",
 		colors.Yellow(snapshot.Status),
@@ -90,4 +120,6 @@ var showCmd = &cobra.Command{
 
 func init() {
 	RootCmd.AddCommand(showCmd)
+	showCmd.Flags().StringVarP(&showFieldsQuery, "field", "f", "",
+		"Select field to display. Valid values are [author,authorEmail,createTime,id,labels,shortId,status,title]")
 }

doc/man/git-bug-show.1 🔗

@@ -19,6 +19,10 @@ Display the details of a bug
 
 
 .SH OPTIONS
+.PP
+\fB\-f\fP, \fB\-\-field\fP=""
+    Select field to display. Valid values are [author,authorEmail,createTime,id,labels,shortId,status,title]
+
 .PP
 \fB\-h\fP, \fB\-\-help\fP[=false]
     help for show

doc/md/git-bug_show.md 🔗

@@ -13,7 +13,8 @@ git-bug show [<id>] [flags]
 ### Options
 
 ```
-  -h, --help   help for show
+  -f, --field string   Select field to display. Valid values are [author,authorEmail,createTime,id,labels,shortId,status,title]
+  -h, --help           help for show
 ```
 
 ### SEE ALSO

misc/bash_completion/git-bug 🔗

@@ -644,6 +644,9 @@ _git-bug_show()
     flags_with_completion=()
     flags_completion=()
 
+    flags+=("--field=")
+    two_word_flags+=("-f")
+    local_nonpersistent_flags+=("--field=")
 
     must_have_one_flag=()
     must_have_one_noun=()

misc/git_hooks/prepare-commit-msg 🔗

@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Insert selected git-bug issue identifier in the comment.
+# if no selected issue, print in comments the list of open issues.
+#
+cmtChar=`git config --get core.commentchar`
+hashChar="#"
+if [ "$cmtChar" = "" ]
+then
+	cmtChar="#"
+fi
+if [ "$cmtChar" = "#" ]
+then
+	hashChar=":"
+fi
+
+ISSUE=`git bug show --field shortId`
+if [ "$ISSUE" = "" ]
+then
+	echo "$cmtChar !!!!! insert $hashChar<issue_id> in your comment, pick one in list below." >> "$1"
+	git bug ls status:open |sed 's/ open\t/ /'| sed "s/^/$cmtChar/" >> "$1"
+else
+	sed -i "1i$hashChar$ISSUE " "$1"
+fi