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