1package boardcmd
2
3import (
4 "github.com/spf13/cobra"
5
6 bugcmd "github.com/git-bug/git-bug/commands/bug"
7 "github.com/git-bug/git-bug/commands/execenv"
8)
9
10type boardAddBugOptions struct {
11 column string
12}
13
14func newBoardAddBugCommand() *cobra.Command {
15 env := execenv.NewEnv()
16 options := boardAddBugOptions{}
17
18 cmd := &cobra.Command{
19 Use: "add-bug [BOARD_ID] [BUG_ID]",
20 Short: "Add a bug to a board",
21 PreRunE: execenv.LoadBackend(env),
22 RunE: execenv.CloseBackend(env, func(cmd *cobra.Command, args []string) error {
23 return runBoardAddBug(env, options, args)
24 }),
25 ValidArgsFunction: BoardAndBugCompletion(env),
26 }
27
28 flags := cmd.Flags()
29 flags.SortFlags = false
30
31 flags.StringVarP(&options.column, "column", "c", "1",
32 "The column to add to. Either a column Id or prefix, or the column number starting from 1.")
33 _ = cmd.RegisterFlagCompletionFunc("column", ColumnCompletion(env))
34
35 return cmd
36}
37
38func runBoardAddBug(env *execenv.Env, opts boardAddBugOptions, args []string) error {
39 b, columnId, err := resolveColumnId(env, opts.column, args)
40 if err != nil {
41 return err
42 }
43
44 bug, _, err := bugcmd.ResolveSelected(env.Backend, args)
45 if err != nil {
46 return err
47 }
48
49 id, _, err := b.AddItemEntity(columnId, bug)
50 if err != nil {
51 return err
52 }
53
54 env.Out.Printf("%s created\n", id.Human())
55
56 return b.Commit()
57}