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 b, args, err := _select.ResolveBug(backend, args)
25 if err != nil {
26 return err
27 }
28
29 if commentAddMessageFile != "" && commentAddMessage == "" {
30 commentAddMessage, err = input.BugCommentFileInput(commentAddMessageFile)
31 if err != nil {
32 return err
33 }
34 }
35
36 if commentAddMessageFile == "" && commentAddMessage == "" {
37 commentAddMessage, err = input.BugCommentEditorInput(backend, "")
38 if err == input.ErrEmptyMessage {
39 fmt.Println("Empty message, aborting.")
40 return nil
41 }
42 if err != nil {
43 return err
44 }
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 PreRunE: loadRepo,
59 RunE: runCommentAdd,
60}
61
62func init() {
63 commentCmd.AddCommand(commentAddCmd)
64
65 commentAddCmd.Flags().SortFlags = false
66
67 commentAddCmd.Flags().StringVarP(&commentAddMessageFile, "file", "F", "",
68 "Take the message from the given file. Use - to read the message from the standard input",
69 )
70
71 commentAddCmd.Flags().StringVarP(&commentAddMessage, "message", "m", "",
72 "Provide the new message from the command line",
73 )
74}