Added optional config-file arg to server script

This commit is contained in:
Eric Froemling 2021-02-24 10:11:41 -06:00
parent 33e4e42837
commit 6c515672ad
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
6 changed files with 73 additions and 35 deletions

View File

@ -3932,26 +3932,26 @@
"assets/build/windows/Win32/ucrtbased.dll": "https://files.ballistica.net/cache/ba1/b5/85/f8b6d0558ddb87267f34254b1450", "assets/build/windows/Win32/ucrtbased.dll": "https://files.ballistica.net/cache/ba1/b5/85/f8b6d0558ddb87267f34254b1450",
"assets/build/windows/Win32/vc_redist.x86.exe": "https://files.ballistica.net/cache/ba1/1c/e1/4a1a2eddda2f4aebd5f8b64ab08e", "assets/build/windows/Win32/vc_redist.x86.exe": "https://files.ballistica.net/cache/ba1/1c/e1/4a1a2eddda2f4aebd5f8b64ab08e",
"assets/build/windows/Win32/vcruntime140d.dll": "https://files.ballistica.net/cache/ba1/50/8d/bc2600ac9491f1b14d659709451f", "assets/build/windows/Win32/vcruntime140d.dll": "https://files.ballistica.net/cache/ba1/50/8d/bc2600ac9491f1b14d659709451f",
"build/prefab/full/linux_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ea/05/68b74f30e981933bbae03755e4de", "build/prefab/full/linux_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/b0/41/1773777bea8220fb532b02207bd8",
"build/prefab/full/linux_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/31/a6/b3ddf128be7d13840e069f827044", "build/prefab/full/linux_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/7a/aa/7db23036581440bd28d245f7b6b0",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/d9/1e/850d020b72dacf7183db2235eae6", "build/prefab/full/linux_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/e2/ef/7254a413f4bb7618b9d7898d6a7f",
"build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/af/e0/c1e1eef9db322ac19764a1c3c064", "build/prefab/full/linux_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7b/64/71ddea075764913a51b13c331d88",
"build/prefab/full/linux_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/81/c7/93bdab4190e62d6a362dda017bbd", "build/prefab/full/linux_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ee/bf/5aa9ef09d3adf56836c0370e587e",
"build/prefab/full/linux_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/be/26/8b6a414b673401e6e4e3fdb7c8c7", "build/prefab/full/linux_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/91/b6/f323561fb316ba15a3f5d7d45858",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/2a/68/72899e9f3026dae42206415dd28a", "build/prefab/full/linux_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/bc/a6/88edc1066bc69f967a924e84fc5b",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/e4/bc/c5ac53cdc69c2d289ee96a017ead", "build/prefab/full/linux_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/96/b6/2ba6d3b0ef4dff3a0a1e1fb7b5da",
"build/prefab/full/mac_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/33/44/526fc5ce4e143d870e3036e7810e", "build/prefab/full/mac_arm64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/4b/af/8a1214609ee5f0d207905e384394",
"build/prefab/full/mac_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/aa/60/af50b46a92dfcd4d99450f0ea90a", "build/prefab/full/mac_arm64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/2a/90/f7532756dd8a21f1a07c1ed12ccc",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/52/b9/419f3cff40380d5c9de94b9cd5bc", "build/prefab/full/mac_arm64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/86/86/a0506a90f1a5845843affb842e09",
"build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/77/cc/27f3e0187c85a966a53d8846b773", "build/prefab/full/mac_arm64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/a3/2b/3127e1a79e6e3aece248ef41ec8c",
"build/prefab/full/mac_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/67/d1/bf1a09c11b5d395eca2480091d82", "build/prefab/full/mac_x86_64/debug/ballisticacore": "https://files.ballistica.net/cache/ba1/ae/31/3542167c07e9abd5f1df07d08181",
"build/prefab/full/mac_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/7b/20/c7ba7aff67a80900985869160266", "build/prefab/full/mac_x86_64/release/ballisticacore": "https://files.ballistica.net/cache/ba1/94/5a/e3b3c60976be78d1728660c638b3",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/83/34/4792d67ee44693f8a79d0e45b693", "build/prefab/full/mac_x86_64_server/debug/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/7a/b2/ca6ad8142f08e81d63d65f52e0ce",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/86/be/8b9603cbee7660f861ac099075cf", "build/prefab/full/mac_x86_64_server/release/dist/ballisticacore_headless": "https://files.ballistica.net/cache/ba1/c9/62/4b17a374c663c730e091a1695911",
"build/prefab/full/windows_x86/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/8e/b6/d1a042ebce63ac649fbc71faeeb4", "build/prefab/full/windows_x86/debug/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/75/11/0bbb84a7d2f285e97d5f6e8b8c5e",
"build/prefab/full/windows_x86/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/ba/02/e4d54f002ee5a741e87c9e31a353", "build/prefab/full/windows_x86/release/BallisticaCore.exe": "https://files.ballistica.net/cache/ba1/d9/89/1d495c48545be16152915c5933ab",
"build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/db/01/88065479393a44de2f4203c849b4", "build/prefab/full/windows_x86_server/debug/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/77/71/570b0118c6e2fe3603b9832a2991",
"build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/bc/83/e79ec5372197af6c23bf80060480", "build/prefab/full/windows_x86_server/release/dist/ballisticacore_headless.exe": "https://files.ballistica.net/cache/ba1/29/dd/2646ab0b39c07c541ad80a7b4727",
"build/prefab/lib/linux_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4c/bf/393694ea67f3d590dd2706c9955e", "build/prefab/lib/linux_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/4c/bf/393694ea67f3d590dd2706c9955e",
"build/prefab/lib/linux_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/78/cb/bb9ae4f896f862074057c8e36e1d", "build/prefab/lib/linux_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/78/cb/bb9ae4f896f862074057c8e36e1d",
"build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ae/bd/39d7b885f7f01e81d0e96f0f85ce", "build/prefab/lib/linux_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ae/bd/39d7b885f7f01e81d0e96f0f85ce",
@ -3960,12 +3960,12 @@
"build/prefab/lib/linux_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/52/d9/563a6949d2c4db5a915c54460fbc", "build/prefab/lib/linux_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/52/d9/563a6949d2c4db5a915c54460fbc",
"build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d0/6a/42fe8d2e34f95e1b3282e8422344", "build/prefab/lib/linux_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d0/6a/42fe8d2e34f95e1b3282e8422344",
"build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/50/cf/bad44b07a4022aee3001002086b5", "build/prefab/lib/linux_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/50/cf/bad44b07a4022aee3001002086b5",
"build/prefab/lib/mac_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/5a/42/aa563542dce1ac737ffeb7876ee0", "build/prefab/lib/mac_arm64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/84/d0/d46d2ce177f1ce6bc0304ce673c9",
"build/prefab/lib/mac_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e5/31/a045a08a8db23dfe4e9da0b5b1fa", "build/prefab/lib/mac_arm64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/09/b7/e094fdfa54fa38751f0caa1c9e68",
"build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/f3/a5/741584cb2f6897d9f11b1a60ab62", "build/prefab/lib/mac_arm64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/69/6f/c99b2718ac104de79337e35414f7",
"build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/58/90/07fd566cc337337e3e622d86c613", "build/prefab/lib/mac_arm64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/d7/76/eecf9cc91f73e3cae73291215216",
"build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/c6/cb/ed41a99350ec3c21184688eacdfa", "build/prefab/lib/mac_x86_64/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/77/0f/0ef7575b11fd70a1d897ab261813",
"build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/2f/dc/4761b6be13320fdf8ba733b10570", "build/prefab/lib/mac_x86_64/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/45/62/8267446a6c71bcc34234ec5e119a",
"build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/71/88/46aa34701da4196d5e53083bf1bb", "build/prefab/lib/mac_x86_64_server/debug/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/78/9b/a5a29e1baa7d5d9d2eaabc9412f9",
"build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/e0/c4/cbcc32a20a5cdb038c33d6f992c0" "build/prefab/lib/mac_x86_64_server/release/libballisticacore_internal.a": "https://files.ballistica.net/cache/ba1/ab/67/4c447ca41efd957bce227a34887c"
} }

View File

@ -176,6 +176,7 @@
<w>baseurl</w> <w>baseurl</w>
<w>baseval</w> <w>baseval</w>
<w>basew</w> <w>basew</w>
<w>basn</w>
<w>bastd</w> <w>bastd</w>
<w>batools</w> <w>batools</w>
<w>bbbb</w> <w>bbbb</w>
@ -320,6 +321,7 @@
<w>charname</w> <w>charname</w>
<w>charstr</w> <w>charstr</w>
<w>chatmessage</w> <w>chatmessage</w>
<w>chdir</w>
<w>cheadersline</w> <w>cheadersline</w>
<w>checkarg</w> <w>checkarg</w>
<w>checkboxwidget</w> <w>checkboxwidget</w>
@ -1381,6 +1383,7 @@
<w>mywidget</w> <w>mywidget</w>
<w>namedarg</w> <w>namedarg</w>
<w>nametext</w> <w>nametext</w>
<w>nameval</w>
<w>nboxes</w> <w>nboxes</w>
<w>ncpu</w> <w>ncpu</w>
<w>ndbm</w> <w>ndbm</w>

View File

@ -32,9 +32,11 @@ if TYPE_CHECKING:
from types import FrameType from types import FrameType
from bacommon.servermanager import ServerCommand from bacommon.servermanager import ServerCommand
VERSION_STR = '1.1.1' VERSION_STR = '1.1.2'
# Version history: # Version history:
# 1.1.2:
# Now accepts config path as sole optional argument.
# 1.1.1: # 1.1.1:
# Switched config reading to use efro.dataclasses.dataclass_from_dict() # Switched config reading to use efro.dataclasses.dataclass_from_dict()
# 1.1.0: # 1.1.0:
@ -56,7 +58,8 @@ class ServerManagerApp:
managing BallisticaCore operating in server mode. managing BallisticaCore operating in server mode.
""" """
def __init__(self) -> None: def __init__(self, config_path: Optional[str] = None) -> None:
self._config_path = config_path
try: try:
self._config = self._load_config() self._config = self._load_config()
except Exception as exc: except Exception as exc:
@ -274,7 +277,8 @@ class ServerManagerApp:
IMMEDIATE_SHUTDOWN_TIME_LIMIT) IMMEDIATE_SHUTDOWN_TIME_LIMIT)
def _load_config(self) -> ServerConfig: def _load_config(self) -> ServerConfig:
user_config_path = 'config.yaml' user_config_path = (self._config_path if self._config_path is not None
else 'config.yaml')
if os.path.exists(user_config_path): if os.path.exists(user_config_path):
import yaml import yaml
@ -284,6 +288,12 @@ class ServerManagerApp:
# An empty config file will yield None, and that's ok. # An empty config file will yield None, and that's ok.
if user_config_raw is not None: if user_config_raw is not None:
return dataclass_from_dict(ServerConfig, user_config_raw) return dataclass_from_dict(ServerConfig, user_config_raw)
else:
print(
f"Warning: config file not found at '{user_config_path}'"
f'; will use default config.',
file=sys.stderr,
flush=True)
# Go with defaults if we weren't able to load anything. # Go with defaults if we weren't able to load anything.
return ServerConfig() return ServerConfig()
@ -518,16 +528,36 @@ class ServerManagerApp:
print(f'{Clr.CYN}Subprocess stopped.{Clr.RST}') print(f'{Clr.CYN}Subprocess stopped.{Clr.RST}')
def _parse_args() -> Optional[str]:
"""Parse command line args; return optional config path."""
if len(sys.argv) > 2:
raise CleanError('Expected no more than 1 arg (config path)')
if len(sys.argv) > 1:
configpath = sys.argv[1]
if not os.path.exists(configpath):
raise CleanError(
f"Supplied config path does not exist: '{configpath}'.")
# Note that we chdir before running the app so we need an abs path
# to this to be safe.
return os.path.abspath(configpath)
return None
def main() -> None: def main() -> None:
"""Run a BallisticaCore server manager in interactive mode.""" """Run a BallisticaCore server manager in interactive mode."""
try: try:
# User can optionally supply a config path.
# (need to get this before we chdir).
config_path = _parse_args()
# ServerManager expects cwd to be the server dir (containing # ServerManager expects cwd to be the server dir (containing
# dist/, config.yaml, etc.) # dist/, config.yaml, etc.)
# Let's change our working directory to the location of this file # Let's change our working directory to the location of this file
# so we can run this script from anywhere and it'll work. # so we can run this script from anywhere and it'll work.
os.chdir(os.path.abspath(os.path.dirname(__file__))) os.chdir(os.path.abspath(os.path.dirname(__file__)))
ServerManagerApp().run_interactive() ServerManagerApp(config_path=config_path).run_interactive()
except CleanError as exc: except CleanError as exc:
# For clean errors, do a simple print and fail; no tracebacks/etc. # For clean errors, do a simple print and fail; no tracebacks/etc.
exc.pretty_print() exc.pretty_print()

View File

@ -68,6 +68,7 @@
<w>barebones</w> <w>barebones</w>
<w>basetype</w> <w>basetype</w>
<w>basicsize</w> <w>basicsize</w>
<w>basn</w>
<w>bastd</w> <w>bastd</w>
<w>bbbb</w> <w>bbbb</w>
<w>bbbbb</w> <w>bbbbb</w>
@ -149,6 +150,7 @@
<w>charnum</w> <w>charnum</w>
<w>charstr</w> <w>charstr</w>
<w>chatmessage</w> <w>chatmessage</w>
<w>chdir</w>
<w>checkboxwidget</w> <w>checkboxwidget</w>
<w>checkchisel</w> <w>checkchisel</w>
<w>chrono</w> <w>chrono</w>
@ -577,6 +579,7 @@
<w>mynode</w> <w>mynode</w>
<w>mystatspage</w> <w>mystatspage</w>
<w>mywidget</w> <w>mywidget</w>
<w>nameval</w>
<w>ndebug</w> <w>ndebug</w>
<w>nearbytab</w> <w>nearbytab</w>
<w>nearval</w> <w>nearval</w>

View File

@ -21,7 +21,7 @@
namespace ballistica { namespace ballistica {
// These are set automatically via script; don't change here. // These are set automatically via script; don't change here.
const int kAppBuildNumber = 20280; const int kAppBuildNumber = 20300;
const char* kAppVersion = "1.6.0"; const char* kAppVersion = "1.6.0";
// Our standalone globals. // Our standalone globals.

View File

@ -445,8 +445,10 @@ def android_patch() -> None:
# change it back to that for now. # change it back to that for now.
fname = 'src/cpython/Modules/makesetup' fname = 'src/cpython/Modules/makesetup'
txt = readfile(fname) txt = readfile(fname)
txt = replace_one(txt, ' *=*) DEFS="$line$NL$DEFS"; continue;;', txt = replace_one(txt, ' *=*)'
' [A-Z]*=*) DEFS="$line$NL$DEFS"; continue;;') ' DEFS="$line$NL$DEFS"; continue;;',
' [A-Z]*=*) DEFS="$line$NL$DEFS";'
' continue;;')
writefile(fname, txt) writefile(fname, txt)
# Add custom callbacks to Python's PyParser_ParseFileObject # Add custom callbacks to Python's PyParser_ParseFileObject