board_addbug.go

 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}