1package commands
 2
 3import (
 4	"fmt"
 5
 6	"github.com/MichaelMure/git-bug/bug"
 7	"github.com/MichaelMure/git-bug/bug/operations"
 8	"github.com/MichaelMure/git-bug/input"
 9	"github.com/spf13/cobra"
10)
11
12var (
13	newTitle       string
14	newMessage     string
15	newMessageFile string
16)
17
18func runNewBug(cmd *cobra.Command, args []string) error {
19	var err error
20
21	if newMessageFile != "" && newMessage == "" {
22		newMessage, err = input.FromFile(newMessageFile)
23		if err != nil {
24			return err
25		}
26	}
27
28	if newMessage == "" || newTitle == "" {
29		newTitle, newMessage, err = input.BugCreateEditorInput(repo, newTitle, newMessage)
30
31		if err == input.ErrEmptyTitle {
32			fmt.Println("Empty title, aborting.")
33			return nil
34		}
35		if err != nil {
36			return err
37		}
38	}
39
40	author, err := bug.GetUser(repo)
41	if err != nil {
42		return err
43	}
44
45	newBug, err := operations.Create(author, newTitle, newMessage)
46	if err != nil {
47		return err
48	}
49
50	err = newBug.Commit(repo)
51
52	if err != nil {
53		return err
54	}
55
56	fmt.Printf("%s created\n", newBug.HumanId())
57
58	return nil
59}
60
61var newCmd = &cobra.Command{
62	Use:   "new [<option>...]",
63	Short: "Create a new bug",
64	RunE:  runNewBug,
65}
66
67func init() {
68	RootCmd.AddCommand(newCmd)
69
70	newCmd.Flags().StringVarP(&newTitle, "title", "t", "",
71		"Provide a title to describe the issue",
72	)
73	newCmd.Flags().StringVarP(&newMessage, "message", "m", "",
74		"Provide a message to describe the issue",
75	)
76	newCmd.Flags().StringVarP(&newMessageFile, "file", "F", "",
77		"Take the message from the given file. Use - to read the message from the standard input",
78	)
79}