Preserve data across the Straywild transition

This commit is contained in:
Alexander Sellite 2026-08-25 22:18:20 -04:00
parent 737d1cf2e0
commit 98a27e2f53
28 changed files with 577 additions and 94 deletions

View file

@ -31,8 +31,10 @@ static func from_runtime() -> DedicatedServerConfig:
result.discovery_url = str(ProjectSettings.get_setting(
"network/discovery/base_url", ""
)).strip_edges()
var config_path: String = OS.get_environment(
"straywild_SERVER_CONFIG"
var config_path: String = _environment_string(
"straywild_SERVER_CONFIG",
"NETFISHING_SERVER_CONFIG",
"",
).strip_edges()
for argument: String in OS.get_cmdline_user_args():
if argument.begins_with("--config="):
@ -87,36 +89,44 @@ func _load_file(path: String) -> bool:
func _apply_environment() -> void:
server_name = _environment_string(
"straywild_SERVER_NAME", server_name
"straywild_SERVER_NAME", "NETFISHING_SERVER_NAME", server_name
)
bind_address = _environment_string(
"straywild_SERVER_BIND", bind_address
"straywild_SERVER_BIND", "NETFISHING_SERVER_BIND", bind_address
)
port = _environment_int(
"straywild_SERVER_PORT", "NETFISHING_SERVER_PORT", port
)
port = _environment_int("straywild_SERVER_PORT", port)
max_players = _environment_int(
"straywild_SERVER_MAX_PLAYERS", max_players
"straywild_SERVER_MAX_PLAYERS",
"NETFISHING_SERVER_MAX_PLAYERS",
max_players,
)
world_seed = _environment_int(
"straywild_WORLD_SEED", world_seed
"straywild_WORLD_SEED", "NETFISHING_WORLD_SEED", world_seed
)
public_listing = _environment_bool(
"straywild_SERVER_PUBLIC", public_listing
"straywild_SERVER_PUBLIC", "NETFISHING_SERVER_PUBLIC", public_listing
)
discovery_url = _environment_string(
"straywild_DISCOVERY_URL", discovery_url
"straywild_DISCOVERY_URL", "NETFISHING_DISCOVERY_URL", discovery_url
)
data_directory = _environment_string(
"straywild_DATA_DIR", data_directory
"straywild_DATA_DIR", "NETFISHING_DATA_DIR", data_directory
)
chat_logging = _environment_bool(
"straywild_CHAT_LOGGING", chat_logging
"straywild_CHAT_LOGGING", "NETFISHING_CHAT_LOGGING", chat_logging
)
chat_log_path = _environment_string(
"straywild_CHAT_LOG_PATH", chat_log_path
"straywild_CHAT_LOG_PATH", "NETFISHING_CHAT_LOG_PATH", chat_log_path
)
if OS.has_environment("straywild_SERVER_OPERATORS"):
var operators_variable: String = _available_environment_variable(
"straywild_SERVER_OPERATORS",
"NETFISHING_SERVER_OPERATORS",
)
if not operators_variable.is_empty():
operator_fingerprints = _parse_fingerprint_list(
OS.get_environment("straywild_SERVER_OPERATORS")
OS.get_environment(operators_variable)
)
@ -211,21 +221,45 @@ static func _safe_text(value: String) -> bool:
return true
static func _environment_string(name: String, fallback: String) -> String:
return OS.get_environment(name) if OS.has_environment(name) else fallback
static func _available_environment_variable(
name: String,
legacy_name: String,
) -> String:
if OS.has_environment(name):
return name
return legacy_name if OS.has_environment(legacy_name) else ""
static func _environment_int(name: String, fallback: int) -> int:
static func _environment_string(
name: String,
legacy_name: String,
fallback: String,
) -> String:
var variable: String = _available_environment_variable(name, legacy_name)
return OS.get_environment(variable) if not variable.is_empty() else fallback
static func _environment_int(
name: String,
legacy_name: String,
fallback: int,
) -> int:
var variable: String = _available_environment_variable(name, legacy_name)
return (
_parse_int(OS.get_environment(name), fallback)
if OS.has_environment(name) else fallback
_parse_int(OS.get_environment(variable), fallback)
if not variable.is_empty() else fallback
)
static func _environment_bool(name: String, fallback: bool) -> bool:
if not OS.has_environment(name):
static func _environment_bool(
name: String,
legacy_name: String,
fallback: bool,
) -> bool:
var variable: String = _available_environment_variable(name, legacy_name)
if variable.is_empty():
return fallback
var value: String = OS.get_environment(name).strip_edges().to_lower()
var value: String = OS.get_environment(variable).strip_edges().to_lower()
return value in ["1", "true", "yes", "on"]