Inital commit
This commit is contained in:
90
main.go
Normal file
90
main.go
Normal file
@@ -0,0 +1,90 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"log"
|
||||
"mc-tool/config"
|
||||
"mc-tool/server"
|
||||
"os"
|
||||
"text/template"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "mc-tool [command]",
|
||||
Short: "Minecraft Management Tool",
|
||||
Long: "mc-tool simplifies common server administration actions",
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
}
|
||||
|
||||
var createCmd = &cobra.Command{
|
||||
Use: "create",
|
||||
Short: "Creates a new minecraft server",
|
||||
Run: server.New,
|
||||
Args: cobra.ExactArgs(1),
|
||||
}
|
||||
|
||||
var startCmd = &cobra.Command{
|
||||
Use: "start",
|
||||
Short: "Start the minecraft server",
|
||||
Run: server.Start,
|
||||
Args: cobra.ExactArgs(1),
|
||||
}
|
||||
|
||||
var stopCmd = &cobra.Command{
|
||||
Use: "stop",
|
||||
Short: "Stop the minecraft server",
|
||||
Run: server.Stop,
|
||||
Args: cobra.ExactArgs(1),
|
||||
}
|
||||
|
||||
var restartCmd = &cobra.Command{
|
||||
Use: "restart",
|
||||
Short: "Restart the minecraft server",
|
||||
Run: server.Restart,
|
||||
Args: cobra.ExactArgs(1),
|
||||
}
|
||||
|
||||
var shellCmd = &cobra.Command{
|
||||
Use: "shell",
|
||||
Short: "Access RCON shell",
|
||||
Run: server.Shell,
|
||||
Args: cobra.ExactArgs(1),
|
||||
}
|
||||
|
||||
//go:embed templates/docker-compose.yml
|
||||
var dockerCompose string
|
||||
|
||||
func init() {
|
||||
createCmd.Flags().StringVarP(&config.Cfg.Name, "name", "n", "minecraft-server", "set the name of the server")
|
||||
createCmd.Flags().StringVarP(&config.Cfg.Version, "version", "v", "1.21.1", "set the version of the server")
|
||||
createCmd.Flags().StringVarP(&config.Cfg.Type, "type", "t", "VANILLA", "set the type of the server")
|
||||
createCmd.Flags().StringVarP(&config.Cfg.Ram, "ram", "r", "2G", "set the memory limit of the server")
|
||||
createCmd.Flags().StringVarP(&config.Cfg.MOTD, "motd", "m", "This server was created using mc-tool", "set the message of the day for the server")
|
||||
createCmd.Flags().StringVarP(&config.Cfg.RestartPolicy, "restart", "R", "never", "what to do when the server fails or host turns off")
|
||||
createCmd.Flags().FuncP("port", "p", "set additional ports for the container to expose", func(s string) error {
|
||||
config.Cfg.Ports = append(config.Cfg.Ports, s)
|
||||
return nil
|
||||
})
|
||||
|
||||
rootCmd.AddCommand(createCmd)
|
||||
rootCmd.AddCommand(startCmd)
|
||||
rootCmd.AddCommand(stopCmd)
|
||||
rootCmd.AddCommand(restartCmd)
|
||||
rootCmd.AddCommand(shellCmd)
|
||||
|
||||
t, err := template.New("compose").Parse(dockerCompose)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
config.Data.DockerCompose = t
|
||||
}
|
||||
|
||||
func main() {
|
||||
log.SetFlags(0)
|
||||
if err := rootCmd.Execute(); err != nil {
|
||||
log.Fatal(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user