summaryrefslogtreecommitdiff
path: root/x
blob: a52964c1d181cf3fbbe51542f164e3eeb578d3e5 (plain)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/usr/bin/env bash

set -e

DC_VELOCITY="docker compose -f docker/velocity/compose.yaml"
DC_FOLIA="docker compose -f docker/folia/compose.yaml"

help() {
    cat <<EOF
Usage: ./x <command> [options]

Velocity environment (Paper s1 + s2 + Velocity proxy):
    start           Build Paper+Velocity and start all containers
    start-s1        Build Paper and start only s1 container
    restart         Restart s1, s2 and velocity containers
    stop            Stop velocity environment
    clean           Stop velocity environment and remove volumes
    rcon [server]   Open rcon-cli for server container (default: s1)
                    Available servers: s1, s2
    logs [server]   Show server container logs (default: s1)
                    Available servers: s1, s2
    vlogs           Show velocity proxy container logs

Folia environment (single Folia server):
    folia start     Build Paper and start Folia server
    folia restart   Restart Folia server
    folia stop      Stop Folia server
    folia clean     Stop Folia server and remove volumes
    folia rcon      Open rcon-cli for Folia server
    folia logs      Show Folia server logs

General:
    help            Show this help message

EOF
}

ensure_plugin_dir() {
    mkdir -p "$1"
}

# --- Folia commands ---
folia_cmd() {
    case "${1:-}" in
        start)
            ./gradlew :platform-paper:clean :platform-paper:shadowJar
            ensure_plugin_dir docker/folia/plugins
            rm -f docker/folia/plugins/*.jar
            cp platform-paper/build/libs/*.jar docker/folia/plugins/
            $DC_FOLIA up
            ;;
        restart)
            $DC_FOLIA restart folia
            ;;
        stop)
            $DC_FOLIA down
            ;;
        clean)
            $DC_FOLIA down -v
            ;;
        rcon)
            $DC_FOLIA exec folia rcon-cli
            ;;
        logs)
            $DC_FOLIA logs -f folia
            ;;
        *)
            echo "Unknown folia command: ${1:-}"
            echo ""
            help
            exit 1
            ;;
    esac
}

# --- Main ---
case "${1:-}" in
    folia)
        folia_cmd "${2:-}"
        ;;
    start)
        ./gradlew :platform-paper:clean :platform-paper:shadowJar :platform-velocity:clean :platform-velocity:shadowJar
        ensure_plugin_dir docker/velocity/plugins-paper-s1
        ensure_plugin_dir docker/velocity/plugins-paper-s2
        ensure_plugin_dir docker/velocity/plugins-velocity
        rm -f docker/velocity/plugins-paper-s1/*.jar
        rm -f docker/velocity/plugins-paper-s2/*.jar
        rm -f docker/velocity/plugins-velocity/*.jar
        cp platform-paper/build/libs/*.jar docker/velocity/plugins-paper-s1/
        cp platform-paper/build/libs/*.jar docker/velocity/plugins-paper-s2/
        cp platform-velocity/build/libs/*.jar docker/velocity/plugins-velocity/
        $DC_VELOCITY up
        ;;
    start-s1)
        ./gradlew :platform-paper:clean :platform-paper:shadowJar
        ensure_plugin_dir docker/velocity/plugins-paper-s1
        rm -f docker/velocity/plugins-paper-s1/*.jar
        cp platform-paper/build/libs/*.jar docker/velocity/plugins-paper-s1/
        $DC_VELOCITY up s1
        ;;
    restart)
        $DC_VELOCITY restart s1 s2 velocity
        ;;
    stop)
        $DC_VELOCITY down
        ;;
    clean)
        $DC_VELOCITY down -v
        ;;
    rcon)
        SERVER="${2:-s1}"
        if [[ "$SERVER" != "s1" && "$SERVER" != "s2" ]]; then
            echo "Error: Invalid server '$SERVER'. Available servers: s1, s2"
            exit 1
        fi
        $DC_VELOCITY exec "$SERVER" rcon-cli
        ;;
    logs)
        SERVER="${2:-s1}"
        if [[ "$SERVER" != "s1" && "$SERVER" != "s2" ]]; then
            echo "Error: Invalid server '$SERVER'. Available servers: s1, s2"
            exit 1
        fi
        $DC_VELOCITY logs -f "$SERVER"
        ;;
    vlogs)
        $DC_VELOCITY logs -f velocity
        ;;
    help|"")
        help
        ;;
    *)
        echo "Unknown command: $1"
        echo ""
        help
        exit 1
        ;;
esac