aboutsummaryrefslogtreecommitdiffstats
path: root/commands/comment_add.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2018-09-15 20:31:40 +0200
committerMichael Muré <batolettre@gmail.com>2018-09-15 20:31:40 +0200
commit6cdc6c087e858e18c5c54e92c60ceb78a37fc3f2 (patch)
tree13f378972d6dd152be5adfcf2df2c2b6aee95db8 /commands/comment_add.go
parentbfb5e96aab9e78f05942151060cc92fdaa32bedd (diff)
downloadgit-bug-6cdc6c087e858e18c5c54e92c60ceb78a37fc3f2.tar.gz
commands: add `git bug comment add` to add a comment
Diffstat (limited to 'commands/comment_add.go')
-rw-r--r--commands/comment_add.go85
1 files changed, 85 insertions, 0 deletions
diff --git a/commands/comment_add.go b/commands/comment_add.go
new file mode 100644
index 00000000..46d0c8b8
--- /dev/null
+++ b/commands/comment_add.go
@@ -0,0 +1,85 @@
+package commands
+
+import (
+ "fmt"
+
+ "github.com/MichaelMure/git-bug/cache"
+ "github.com/MichaelMure/git-bug/input"
+ "github.com/pkg/errors"
+ "github.com/spf13/cobra"
+)
+
+var (
+ commentAddMessageFile string
+ commentAddMessage string
+)
+
+func runCommentAdd(cmd *cobra.Command, args []string) error {
+ var err error
+
+ if len(args) > 1 {
+ return errors.New("Only one bug id is supported")
+ }
+
+ if len(args) == 0 {
+ return errors.New("You must provide a bug id")
+ }
+
+ backend, err := cache.NewRepoCache(repo)
+ if err != nil {
+ return err
+ }
+ defer backend.Close()
+
+ prefix := args[0]
+
+ if commentAddMessageFile != "" && commentAddMessage == "" {
+ commentAddMessage, err = input.FromFile(commentAddMessageFile)
+ if err != nil {
+ return err
+ }
+ }
+
+ if commentAddMessage == "" {
+ commentAddMessage, err = input.BugCommentEditorInput(backend.Repository())
+ if err == input.ErrEmptyMessage {
+ fmt.Println("Empty message, aborting.")
+ return nil
+ }
+ if err != nil {
+ return err
+ }
+ }
+
+ b, err := backend.ResolveBugPrefix(prefix)
+ if err != nil {
+ return err
+ }
+
+ err = b.AddComment(commentAddMessage)
+ if err != nil {
+ return err
+ }
+
+ return b.Commit()
+}
+
+var commentAddCmd = &cobra.Command{
+ Use: "add <id>",
+ Short: "Add a new comment to a bug",
+ RunE: runCommentAdd,
+}
+
+func init() {
+ commentCmd.AddCommand(commentAddCmd)
+
+ commentCmd.Flags().SortFlags = false
+
+ commentCmd.Flags().StringVarP(&commentAddMessageFile, "file", "F", "",
+ "Take the message from the given file. Use - to read the message from the standard input",
+ )
+
+ commentCmd.Flags().StringVarP(&commentAddMessage, "message", "m", "",
+ "Provide the new message from the command line",
+ )
+}