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 } }