Skip to content

Commit 4b95263

Browse files
committed
fix boostrap
1 parent 49dd3ec commit 4b95263

10 files changed

Lines changed: 129 additions & 113 deletions

File tree

server_manager/jobs/backup

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
#!/usr/bin/env bash
22

33
SCRIPT_DIR="$(cd -P "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" >/dev/null 2>&1 && pwd)"
4-
# shellcheck source=server_manager/jobs/server
5-
. "${SCRIPT_DIR}/server"
64
# shellcheck source=server_manager/jobs/profile
75
. "${SCRIPT_DIR}/profile"
86

server_manager/jobs/bootstrap

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
#!/bin/bash
22
SCRIPT_DIR="$(cd -P "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" >/dev/null 2>&1 && pwd)"
3-
# shellcheck source=server_manager/jobs/server
4-
. "${SCRIPT_DIR}/server"
53
# shellcheck source=server_manager/jobs/env-validation
64
. "${SCRIPT_DIR}/env-validation"
75

@@ -63,32 +61,6 @@ server_run() {
6361
"${SCRIPT_DIR}/server" "$@"
6462
}
6563

66-
wait_for_rsyslogd_running() {
67-
local timeout interval started_at now elapsed remaining status_line state
68-
timeout=60
69-
interval=1
70-
71-
started_at="$(date +%s)"
72-
while true; do
73-
status_line="$(supervisorctl status rsyslogd 2>/dev/null || true)"
74-
state="$(awk 'NR==1 {print $2}' <<<"$status_line")"
75-
if [[ "$state" == "RUNNING" ]]; then
76-
info "rsyslogd is RUNNING; bootstrap job can continue"
77-
return 0
78-
fi
79-
80-
now="$(date +%s)"
81-
elapsed="$((now - started_at))"
82-
remaining="$((timeout - elapsed))"
83-
if (( remaining <= 0 )); then
84-
fatal "Timeout waiting for rsyslogd to reach RUNNING state (last_status='${status_line:-unknown}')"
85-
fi
86-
87-
info "Waiting for rsyslogd RUNNING state... (${elapsed}s elapsed, ${remaining}s remaining; status='${status_line:-unknown}')"
88-
sleep "$interval"
89-
done
90-
}
91-
9264
prepare_enshrouded_app_folders() {
9365
info "Ensuring Enshrouded install directory exists: $install_path"
9466
mkdir -p "$install_path"
@@ -398,15 +370,14 @@ run_entrypoint_mode() {
398370

399371
run_job_mode() {
400372
local bootstrap_pre_hook updater_player_flag
401-
wait_for_rsyslogd_running
402373
info "Running bootstrap job mode (skip_update=${skip_update})"
403-
server_run guard-require core_ready -- "${SCRIPT_DIR}/server" --startup-ui
374+
server_run --startup-ui
404375
init_runtime_env
405376
verify_variables
406377
prepare_enshrouded_app_folders
407378
update_or_create_enshrouded_server_config
408379
prepare_steam_a2s_python_library
409-
server_run cron sync --update-cron "${UPDATE_CRON:-}" --backup-cron "${BACKUP_CRON:-}" --restart-cron "${RESTART_CRON:-}"
380+
server_run cron sync --runtime-ready --update-cron "${UPDATE_CRON:-}" --backup-cron "${BACKUP_CRON:-}" --restart-cron "${RESTART_CRON:-}"
410381
bootstrap_pre_hook="${BOOTSTRAP_PRE_HOOK:-${BOOTSTRAP_HOOK:-}}"
411382
server_run hook-run "bootstrap pre" "$bootstrap_pre_hook"
412383
if [[ "$skip_update" == "true" ]]; then
@@ -418,7 +389,7 @@ run_job_mode() {
418389
fi
419390
# Pass an explicit updater arg so `server update` runs the updater script directly.
420391
# This preserves UPDATER_BOOTSTRAP_MODE for bootstrap-specific log levels.
421-
UPDATER_BOOTSTRAP_MODE=true server_run update "$updater_player_flag"
392+
UPDATER_BOOTSTRAP_MODE=true server_run update --runtime-ready "$updater_player_flag"
422393
fi
423394
server_run hook-run "bootstrap post" "${BOOTSTRAP_POST_HOOK:-}"
424395
success "Bootstrap job mode complete"

server_manager/jobs/cron

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
#!/bin/bash
22
SCRIPT_DIR="$(cd -P "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" >/dev/null 2>&1 && pwd)"
3-
# shellcheck source=server_manager/jobs/server
4-
. "${SCRIPT_DIR}/server"
53
# shellcheck source=server_manager/jobs/env-validation
64
. "${SCRIPT_DIR}/env-validation"
75

86
update_cron="${UPDATE_CRON:-}"
97
backup_cron="${BACKUP_CRON:-}"
108
restart_cron="${RESTART_CRON:-}"
119
service_action=""
10+
runtime_ready="false"
1211
SERVER_JOB_BIN="${SERVER_JOB_BIN:-${SCRIPT_DIR}/server}"
1312

1413
usage() {
1514
cat <<'EOF'
1615
Usage:
1716
cron [sync] [--update-cron "<expr>"] [--backup-cron "<expr>"] [--restart-cron "<expr>"]
1817
cron <start|stop|restart|status>
19-
cron [--sync] [--update-cron "<expr>"] [--backup-cron "<expr>"] [--restart-cron "<expr>"]
18+
cron [--sync] [--runtime-ready] [--update-cron "<expr>"] [--backup-cron "<expr>"] [--restart-cron "<expr>"]
2019
cron --service <start|stop|restart|status>
2120
EOF
2221
}
@@ -38,6 +37,10 @@ parse_args() {
3837
--sync)
3938
shift
4039
;;
40+
--runtime-ready|runtime-ready)
41+
runtime_ready="true"
42+
shift
43+
;;
4144
--service)
4245
service_action="${2-}"
4346
[[ -n "$service_action" ]] || fatal "Missing value for --service"
@@ -172,7 +175,11 @@ main() {
172175
fi
173176

174177
info "Running cron schedule sync (update=${update_cron:-<empty>}, backup=${backup_cron:-<empty>}, restart=${restart_cron:-<empty>})"
175-
init_runtime_env
178+
if [[ "$runtime_ready" == "true" ]]; then
179+
info "Skipping runtime initialization (--runtime-ready)"
180+
else
181+
init_runtime_env
182+
fi
176183
sync_crontab
177184
success "Cron schedule sync complete"
178185
}

server_manager/jobs/env-validation

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
_validation_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
44

5-
# shellcheck source=server_manager/jobs/server
6-
. "${_validation_dir}/server"
5+
# shellcheck source=server_manager/lib/log
6+
. "${_validation_dir}/../lib/log"
77

88
# Shared profile/path helpers are centralized in `profile`.
99
# shellcheck source=server_manager/jobs/profile
@@ -212,7 +212,7 @@ validation__rule_from_env_row() {
212212
"$env_mode" "$val_type" "$val_min" "$val_max" "$val_regex" \
213213
"$val_enum_spec" "$val_list_spec" "$meta_description" "$meta_allowed"
214214
}
215-
215+
216216
validation__has_spec_files() {
217217
[[ -f "$VALIDATION_SERVER_MANAGER_SPEC_FILE" && -f "$VALIDATION_ENSHROUDED_SPEC_FILE" ]]
218218
}
@@ -1352,6 +1352,12 @@ load_enshrouded_env_from_profile() {
13521352
}
13531353

13541354
init_runtime_env() {
1355+
local query_port_env_is_set
1356+
query_port_env_is_set="false"
1357+
if printenv ENSHROUDED_QUERY_PORT >/dev/null 2>&1; then
1358+
query_port_env_is_set="true"
1359+
fi
1360+
13551361
# Ensure MANAGER_PROFILE_DIR contains a persistent copy of shipped Server Manager templates.
13561362
info "Initializing runtime environment"
13571363
info "Ensuring manager profile catalog"
@@ -1376,6 +1382,17 @@ init_runtime_env() {
13761382

13771383
savefile_name="$SAVEFILE_NAME"
13781384
steam_app_id="$STEAM_APP_ID"
1385+
1386+
if [[ -n "${ENSHROUDED_QUERY_PORT:-}" ]]; then
1387+
if [[ "$query_port_env_is_set" == "true" ]]; then
1388+
success "Resolved deferred runtime value for ENSHROUDED_QUERY_PORT via ENV (value=${ENSHROUDED_QUERY_PORT})."
1389+
else
1390+
info "Resolved deferred runtime value for ENSHROUDED_QUERY_PORT via config/profile fallback (value=${ENSHROUDED_QUERY_PORT})."
1391+
fi
1392+
else
1393+
warn "Deferred runtime value ENSHROUDED_QUERY_PORT is empty after initialization."
1394+
fi
1395+
13791396
info "Runtime environment initialized (steam_app_id=${steam_app_id:-<empty>}, savefile_name=${savefile_name:-<empty>})"
13801397
}
13811398

server_manager/jobs/menu

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
#!/bin/bash
22
SCRIPT_DIR="$(cd -P "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" >/dev/null 2>&1 && pwd)"
3-
# shellcheck source=server_manager/jobs/server
4-
. "${SCRIPT_DIR}/server"
53
# shellcheck source=server_manager/jobs/env-validation
64
. "${SCRIPT_DIR}/env-validation"
75

server_manager/jobs/profile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#!/usr/bin/env bash
22

33
PROFILE_SCRIPT_DIR="$(cd -P "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" >/dev/null 2>&1 && pwd)"
4-
# shellcheck source=server_manager/jobs/server
5-
. "${PROFILE_SCRIPT_DIR}/server"
4+
# shellcheck source=server_manager/lib/log
5+
. "${PROFILE_SCRIPT_DIR}/../lib/log"
66

77
install_path="${INSTALL_PATH:-/home/enshrouded/server}"
88
MANAGER_DATA_DIR="${MANAGER_DATA_DIR:-${install_path}/server_manager}"

server_manager/jobs/restart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
#!/usr/bin/env bash
22

33
SCRIPT_DIR="$(cd -P "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" >/dev/null 2>&1 && pwd)"
4-
# shellcheck source=server_manager/jobs/server
5-
. "${SCRIPT_DIR}/server"
64
# shellcheck source=server_manager/jobs/profile
75
. "${SCRIPT_DIR}/profile"
86

server_manager/jobs/server

Lines changed: 2 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -7,68 +7,8 @@ if [[ "${__ENSHROUDED_SERVER_SOURCE_GUARD:-0}" == "1" ]]; then
77
fi
88
__ENSHROUDED_SERVER_SOURCE_GUARD=1
99

10-
LOG_LEVEL_INFO=40
11-
LOG_LEVEL_ERROR=35
12-
LOG_LEVEL_WARN=30
13-
LOG_LEVEL_DEBUG=50
14-
log_level="${LOG_LEVEL:-$LOG_LEVEL_INFO}"
15-
16-
init_colors() {
17-
local wants_color
18-
wants_color="false"
19-
20-
if [[ "${LOG_COLOR:-}" == "true" || "${LOG_COLOR:-}" == "TRUE" ]]; then
21-
wants_color="true"
22-
fi
23-
24-
if [[ "$wants_color" != "true" ]]; then
25-
C_RESET=""
26-
C_DIM=""
27-
C_RED=""
28-
C_BLUE=""
29-
C_YELLOW=""
30-
C_GREEN=""
31-
C_MAGENTA=""
32-
else
33-
C_RESET=$'\033[0m'
34-
C_DIM=$'\033[2m'
35-
C_RED=$'\033[31m'
36-
C_BLUE=$'\033[34m'
37-
C_YELLOW=$'\033[33m'
38-
C_GREEN=$'\033[32m'
39-
C_MAGENTA=$'\033[35m'
40-
fi
41-
}
42-
43-
mirror_to_container_stderr() { :; }
44-
45-
log_line() {
46-
local stream level_color level message
47-
local rendered
48-
stream="$1"
49-
level_color="$2"
50-
level="$3"
51-
shift 3
52-
message="$*"
53-
rendered="$(printf "%s%s%s: %s" "$level_color" "$level" "$C_RESET" "$message")"
54-
if [[ "$stream" == "stderr" ]]; then
55-
printf "%s\n" "$rendered" >&2
56-
else
57-
printf "%s\n" "$rendered"
58-
fi
59-
mirror_to_container_stderr "$rendered"
60-
}
61-
62-
info() { [[ "$log_level" -ge "$LOG_LEVEL_INFO" ]] && log_line stderr "$C_BLUE" INFO "$*" || true; }
63-
success() {
64-
[[ "$log_level" -ge "$LOG_LEVEL_INFO" ]] || return 0
65-
log_line stderr "$C_BLUE" INFO "${C_GREEN}success${C_RESET}: $*"
66-
}
67-
error() { [[ "$log_level" -ge "$LOG_LEVEL_ERROR" ]] && log_line stderr "$C_RED" ERROR "$*" || true; }
68-
warn() { [[ "$log_level" -ge "$LOG_LEVEL_WARN" ]] && log_line stderr "$C_YELLOW" WARN "$*" || true; }
69-
fatal() { log_line stderr "$C_RED" FATAL "$*"; exit 1; }
70-
71-
init_colors
10+
# shellcheck source=server_manager/lib/log
11+
. "${SCRIPT_DIR}/../lib/log"
7212

7313
if [[ "${BASH_SOURCE[0]}" != "$0" ]]; then
7414
return 0

server_manager/jobs/updater

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
#!/bin/bash
22
SCRIPT_DIR="$(cd -P "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" >/dev/null 2>&1 && pwd)"
3-
# shellcheck source=server_manager/jobs/server
4-
. "${SCRIPT_DIR}/server"
53
# shellcheck source=server_manager/jobs/env-validation
64
. "${SCRIPT_DIR}/env-validation"
75

@@ -11,6 +9,7 @@ FORCE_UPDATE="false"
119
CHECK_ONLY="false"
1210
NO_PLAYER_CHECK="false"
1311
PLAYER_CHECK_FORCE=""
12+
runtime_ready="false"
1413

1514
debug() { [[ "${LOG_LEVEL:-40}" -ge 50 ]] && log_line stderr "$C_MAGENTA" DEBUG "$*" || true; }
1615

@@ -71,7 +70,7 @@ usage() {
7170
cat <<'EOF'
7271
Usage:
7372
updater [force|check|player-check|no-player-check]
74-
updater [--force] [--check-only] [--player-check|--no-player-check]
73+
updater [--force] [--check-only] [--runtime-ready] [--player-check|--no-player-check]
7574
EOF
7675
}
7776

@@ -107,6 +106,10 @@ parse_args() {
107106
CHECK_ONLY="true"
108107
shift
109108
;;
109+
--runtime-ready|runtime-ready)
110+
runtime_ready="true"
111+
shift
112+
;;
110113
--player-check)
111114
PLAYER_CHECK_FORCE="true"
112115
shift
@@ -317,7 +320,11 @@ check_proton_files_available() {
317320

318321
main() {
319322
parse_args "$@"
320-
init_runtime_env
323+
if [[ "$runtime_ready" == "true" ]]; then
324+
info "Skipping runtime initialization (--runtime-ready)"
325+
else
326+
init_runtime_env
327+
fi
321328

322329
if [[ -n "$PLAYER_CHECK_FORCE" ]]; then
323330
UPDATE_CHECK_PLAYERS="$PLAYER_CHECK_FORCE"

0 commit comments

Comments
 (0)