68 lines
952 B
Go
68 lines
952 B
Go
package docker
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"strings"
|
|
)
|
|
|
|
type Port struct {
|
|
In string
|
|
Out string
|
|
}
|
|
|
|
type ServerType int
|
|
|
|
const (
|
|
FORGE ServerType = iota
|
|
FABRIC
|
|
NEOFORGE
|
|
VANILLA
|
|
)
|
|
|
|
func (p Port) String() string {
|
|
return fmt.Sprintf("%s:%s", p.In, p.Out)
|
|
}
|
|
|
|
func (t ServerType) String() string {
|
|
switch t {
|
|
case FORGE:
|
|
return "FORGE"
|
|
case NEOFORGE:
|
|
return "NEOFORGE"
|
|
case VANILLA:
|
|
return "VANILLA"
|
|
}
|
|
log.Panicln("unreachable")
|
|
return ""
|
|
}
|
|
|
|
func PortFromString(port string) Port {
|
|
parts := strings.Split(port, ":")
|
|
return Port{
|
|
In: parts[0],
|
|
Out: parts[1],
|
|
}
|
|
}
|
|
|
|
func PortsFromStrings(ports []string) (r []Port) {
|
|
for _, port := range ports {
|
|
r = append(r, PortFromString(port))
|
|
}
|
|
return
|
|
}
|
|
|
|
func TypeFromString(in string) ServerType {
|
|
switch in {
|
|
case "FORGE":
|
|
return FORGE
|
|
case "NEOFORGE":
|
|
return NEOFORGE
|
|
case "VANILLA":
|
|
return VANILLA
|
|
default:
|
|
log.Fatalf("unknown server type \"%s\"", in)
|
|
}
|
|
return VANILLA
|
|
}
|