diff options
Diffstat (limited to 'commands/show.go')
-rw-r--r-- | commands/show.go | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/commands/show.go b/commands/show.go index 86c01a17..56717b3b 100644 --- a/commands/show.go +++ b/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), @@ -58,6 +88,7 @@ func runShowBug(cmd *cobra.Command, args []string) error { indent := " " for i, comment := range snapshot.Comments { + var message string fmt.Printf("%s#%d %s <%s>\n\n", indent, i, @@ -65,9 +96,15 @@ func runShowBug(cmd *cobra.Command, args []string) error { comment.Author.Email, ) + if comment.Message == "" { + message = colors.GreyBold("No description provided.") + } else { + message = comment.Message + } + fmt.Printf("%s%s\n\n\n", indent, - comment.Message, + message, ) } @@ -83,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]") } |