aboutsummaryrefslogtreecommitdiffstats
path: root/commands/close.go
diff options
context:
space:
mode:
Diffstat (limited to 'commands/close.go')
-rw-r--r--commands/close.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/commands/close.go b/commands/close.go
new file mode 100644
index 00000000..6e668a50
--- /dev/null
+++ b/commands/close.go
@@ -0,0 +1,39 @@
+package commands
+
+import (
+ "errors"
+ "github.com/MichaelMure/git-bug/bug"
+ "github.com/MichaelMure/git-bug/bug/operations"
+ "github.com/MichaelMure/git-bug/repository"
+)
+
+func runCloseBug(repo repository.Repo, args []string) error {
+ if len(args) > 1 {
+ return errors.New("Only closing one bug at a time is supported")
+ }
+
+ if len(args) == 0 {
+ return errors.New("You must provide a bug id")
+ }
+
+ prefix := args[0]
+
+ b, err := bug.FindBug(repo, prefix)
+ if err != nil {
+ return err
+ }
+
+ op := operations.NewSetStatusOp(bug.ClosedStatus)
+
+ b.Append(op)
+
+ err = b.Commit(repo)
+
+ return err
+}
+
+var closeCmd = &Command{
+ Description: "Mark the bug as closed",
+ Usage: "<id>",
+ RunMethod: runCloseBug,
+}