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
66
67
68
69
70
71
72
73
74
|
package main
import (
"fmt"
"os"
"github.com/hachem-wtf/benson/internal/bot"
"github.com/hachem-wtf/benson/internal/cli"
"github.com/hachem-wtf/benson/internal/setup"
)
const version = "2.0"
func usage() {
fmt.Fprint(os.Stderr, `benson — a Minecraft server manager from hell
Usage:
benson Start the interactive server-manager CLI
benson setup Configure the server manager
benson setup bot Configure the Discord bot
benson bot Run the Discord bot
benson version Print the version
benson help Show this help
`)
}
func main() {
os.Exit(run(os.Args[1:]))
}
func run(args []string) int {
if len(args) == 0 {
if err := cli.Run(version); err != nil {
fmt.Fprintln(os.Stderr, "error:", err)
return 1
}
return 0
}
switch args[0] {
case "setup":
var err error
switch {
case len(args) == 1:
err = setup.Run()
case args[1] == "bot":
err = setup.RunBot()
default:
fmt.Fprintf(os.Stderr, "benson: unknown setup target %q (try `benson setup` or `benson setup bot`)\n", args[1])
return 2
}
if err != nil {
fmt.Fprintln(os.Stderr, "error:", err)
return 1
}
return 0
case "bot":
if err := bot.Run(); err != nil {
fmt.Fprintln(os.Stderr, "error:", err)
return 1
}
return 0
case "version", "--version", "-v":
fmt.Println("benson", version)
return 0
case "help", "--help", "-h":
usage()
return 0
default:
fmt.Fprintf(os.Stderr, "benson: unknown command %q\n\n", args[0])
usage()
return 2
}
}
|