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}