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