comment_add.go

 1package commands
 2
 3import (
 4	"fmt"
 5
 6	"github.com/MichaelMure/git-bug/cache"
 7	"github.com/MichaelMure/git-bug/commands/select"
 8	"github.com/MichaelMure/git-bug/input"
 9	"github.com/spf13/cobra"
10)
11
12var (
13	commentAddMessageFile string
14	commentAddMessage     string
15)
16
17func runCommentAdd(cmd *cobra.Command, args []string) error {
18	backend, err := cache.NewRepoCache(repo)
19	if err != nil {
20		return err
21	}
22	defer backend.Close()
23
24	if commentAddMessageFile != "" && commentAddMessage == "" {
25		commentAddMessage, err = input.FromFile(commentAddMessageFile)
26		if err != nil {
27			return err
28		}
29	}
30
31	if commentAddMessage == "" {
32		commentAddMessage, err = input.BugCommentEditorInput(backend.Repository())
33		if err == input.ErrEmptyMessage {
34			fmt.Println("Empty message, aborting.")
35			return nil
36		}
37		if err != nil {
38			return err
39		}
40	}
41
42	b, args, err := _select.ResolveBug(backend, args)
43	if err != nil {
44		return err
45	}
46
47	err = b.AddComment(commentAddMessage)
48	if err != nil {
49		return err
50	}
51
52	return b.Commit()
53}
54
55var commentAddCmd = &cobra.Command{
56	Use:   "add [<id>]",
57	Short: "Add a new comment",
58	RunE:  runCommentAdd,
59}
60
61func init() {
62	commentCmd.AddCommand(commentAddCmd)
63
64	commentCmd.Flags().SortFlags = false
65
66	commentCmd.Flags().StringVarP(&commentAddMessageFile, "file", "F", "",
67		"Take the message from the given file. Use - to read the message from the standard input",
68	)
69
70	commentCmd.Flags().StringVarP(&commentAddMessage, "message", "m", "",
71		"Provide the new message from the command line",
72	)
73}