/
entomonitor.go
65 lines (60 loc) · 1.42 KB
/
entomonitor.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//target:entomonitor
package main
import (
"fmt"
"os"
"bufio"
"έντομο"
"github.com/droundy/goopt"
)
var action = goopt.Alternatives([]string{"-A", "--action"},
[]string{"help", "new-issue", "comment"}, "select the action to be performed")
var message = goopt.String([]string{"-m", "--message"}, "", "short message")
var bugid = goopt.String([]string{"-b", "--bug"}, "", "bug ID")
func dieOn(err os.Error) {
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
var bug = έντομο.Type("bug")
func main() {
goopt.Parse(func() []string { return nil })
pname, err := έντομο.ProjectName()
dieOn(err)
fmt.Println("Project name is", pname)
if *action == "help" {
fmt.Println(goopt.Usage())
os.Exit(0)
}
switch *action {
case "new-issue":
if *message == "" {
fmt.Println("What is the problem?")
bugtext, err := Edit("ENTER BUG REPORT HERE")
dieOn(err)
*message = bugtext
}
_, err := bug.New(*message)
dieOn(err)
case "comment":
if *bugid == "" {
fmt.Print("Which bug? ")
inp, e := bufio.NewReaderSize(os.Stdin, 1)
dieOn(e)
*bugid, err = inp.ReadString('\n')
if len(*bugid) > 0 {
*bugid = (*bugid)[:len(*bugid)-1]
}
}
b, err := έντομο.LookupBug(*bugid)
dieOn(err)
fmt.Print("What do you want to say? ")
bugtext, err := Edit("ENTER COMMENT HERE")
dieOn(err)
b.AddComment(bugtext)
default:
fmt.Println("I should do", *action)
os.Exit(1)
}
}