-
Notifications
You must be signed in to change notification settings - Fork 3
/
main.go
52 lines (45 loc) · 1.14 KB
/
main.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
// entry point of kddp
package main
import (
"fmt"
"os"
)
func main() {
// catch panics and instead set the returned error
defer handle_panics()
// run sub-commands like build or help
if err := runCommands(); err != nil {
if err.Error() != "" {
fmt.Fprintf(os.Stderr, "\n%s\n", err)
}
os.Exit(1)
}
}
func runCommands() error {
// if no sub-command is provided, error
if len(os.Args) < 2 {
return fmt.Errorf(
`Nutzung: kddp <Befehl> <Optionen>
Für mehr Informationen probiere $kddp hilfe
`)
}
// run the specified sub-command
subcmd := os.Args[1]
for _, cmd := range commands {
if cmd.Name() == subcmd {
if err := cmd.Init(os.Args[2:]); err != nil {
return err
}
return cmd.Run()
}
}
return fmt.Errorf("Unbekannter Befehl '%s'\nFür eine Liste aller Befehle probiere $kddp hilfe", subcmd)
}
func handle_panics() {
if err := recover(); err != nil {
fmt.Fprintf(os.Stderr,
"Unerwarteter Fehler: %v\nDieser Fehler ist vermutlich ein Bug im DDP-Kompilierer.\nBitte erstelle einen Issue unter https://github.com/DDP-Projekt/Kompilierer oder melde ihn anderweitig den Entwicklern.\n",
err)
os.Exit(1)
}
}