-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathserver.go
70 lines (61 loc) · 1.73 KB
/
server.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package cmd
import (
"github.com/nothub/mrpack-install/mojang"
"github.com/nothub/mrpack-install/server"
"github.com/spf13/cobra"
"log"
"os"
"strings"
)
var (
// local options
minecraftVersion string
flavorVersion string
)
func init() {
serverCmd.Flags().StringVar(&minecraftVersion, "minecraft-version", "latest", "Minecraft version")
serverCmd.Flags().StringVar(&flavorVersion, "flavor-version", "latest", "Flavor version")
// TODO: --eula
// TODO: --op <uuid>...
// TODO: --whitelist <uuid>...
// TODO: --start-server
RootCmd.AddCommand(serverCmd)
cobra.OnInitialize(func() {
// --minecraft-version
if minecraftVersion == "" || minecraftVersion == "latest" {
latestMinecraftVersion, err := mojang.LatestRelease()
if err != nil {
log.Fatalln(err)
}
minecraftVersion = latestMinecraftVersion
}
})
}
var serverCmd = &cobra.Command{
Use: "server ( " + strings.Join(server.FlavorNames(), " | ") + " )",
Short: "Prepare a plain server environment",
Long: `Download and configure one of several Minecraft server flavors.`,
Example: ` mrpack-install server fabric --server-dir fabric-srv
mrpack-install server paper --minecraft-version 1.18.2 --server-file srv.jar`,
Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs),
ValidArgs: server.FlavorNames(),
Run: func(cmd *cobra.Command, args []string) {
err := os.MkdirAll(serverDir, 0755)
if err != nil {
log.Fatalln(err)
}
err = os.Chdir(serverDir)
if err != nil {
log.Fatalln(err)
}
flavor := server.ToFlavor(args[0])
inst, err := server.NewInstaller(flavor, minecraftVersion, flavorVersion)
if err != nil {
log.Fatalln(err)
}
err = inst.Install(serverDir, serverFile)
if err != nil {
log.Fatalln(err)
}
},
}