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}