hachem.wtf
aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorhachem <im@hachem.wtf>2026-08-29 02:17:12 +0200
committerhachem <im@hachem.wtf>2026-08-29 02:17:12 +0200
commite56d21fa04450d118f76347a96a12d1d5477958f (patch)
tree06d590ef64153e2ab92306a4a7cc63d6fef47286 /main.go
parent43d92fd60d75c4a1260757c75b1e1eefc0ea8952 (diff)
setup: prepare go workspace
Diffstat (limited to 'main.go')
-rw-r--r--main.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..cd9c607
--- /dev/null
+++ b/main.go
@@ -0,0 +1,64 @@
+// Command benson is a Minecraft server manager from hell.
+//
+// It is a single binary that exposes two modes:
+//
+// benson Start the interactive server-manager CLI
+// benson bot Run the Discord bot
+//
+// Both modes share the same configuration and Modrinth client.
+package main
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/le-hachem/benson/internal/bot"
+ "github.com/le-hachem/benson/internal/cli"
+)
+
+// version is the Benson release version.
+const version = "1.1.0"
+
+func usage() {
+ fmt.Fprint(os.Stderr, `benson — a Minecraft server manager from hell
+
+Usage:
+ benson Start the interactive server-manager CLI
+ 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 "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
+ }
+}