Config presets system. (#12824)
This commit is contained in:
committed by
GitHub
parent
326fdefe85
commit
55c61b9c35
@@ -37,6 +37,9 @@ namespace Content.Server.Entry
|
||||
{
|
||||
public sealed class EntryPoint : GameServer
|
||||
{
|
||||
private const string ConfigPresetsDir = "/ConfigPresets/";
|
||||
private const string ConfigPresetsDirBuild = $"{ConfigPresetsDir}Build/";
|
||||
|
||||
private EuiManager _euiManager = default!;
|
||||
private IVoteManager _voteManager = default!;
|
||||
private ServerUpdateManager _updateManager = default!;
|
||||
@@ -48,6 +51,12 @@ namespace Content.Server.Entry
|
||||
{
|
||||
base.Init();
|
||||
|
||||
var cfg = IoCManager.Resolve<IConfigurationManager>();
|
||||
var res = IoCManager.Resolve<IResourceManager>();
|
||||
var logManager = IoCManager.Resolve<ILogManager>();
|
||||
|
||||
LoadConfigPresets(cfg, res, logManager.GetSawmill("configpreset"));
|
||||
|
||||
var aczProvider = new ContentMagicAczProvider(IoCManager.Resolve<IDependencyCollection>());
|
||||
IoCManager.Resolve<IStatusHost>().SetMagicAczProvider(aczProvider);
|
||||
|
||||
@@ -85,7 +94,6 @@ namespace Content.Server.Entry
|
||||
_playTimeTracking = IoCManager.Resolve<PlayTimeTrackingManager>();
|
||||
_sysMan = IoCManager.Resolve<IEntitySystemManager>();
|
||||
|
||||
var logManager = IoCManager.Resolve<ILogManager>();
|
||||
logManager.GetSawmill("Storage").Level = LogLevel.Info;
|
||||
logManager.GetSawmill("db.ef").Level = LogLevel.Info;
|
||||
|
||||
@@ -165,5 +173,47 @@ namespace Content.Server.Entry
|
||||
_playTimeTracking?.Shutdown();
|
||||
_sysMan?.GetEntitySystemOrNull<StationSystem>()?.OnServerDispose();
|
||||
}
|
||||
|
||||
private static void LoadConfigPresets(IConfigurationManager cfg, IResourceManager res, ISawmill sawmill)
|
||||
{
|
||||
LoadBuildConfigPresets(cfg, res, sawmill);
|
||||
|
||||
var presets = cfg.GetCVar(CCVars.ConfigPresets);
|
||||
if (presets == "")
|
||||
return;
|
||||
|
||||
foreach (var preset in presets.Split(','))
|
||||
{
|
||||
var path = $"{ConfigPresetsDir}{preset}.toml";
|
||||
if (!res.TryContentFileRead(path, out var file))
|
||||
{
|
||||
sawmill.Error("Unable to load config preset {Preset}!", path);
|
||||
continue;
|
||||
}
|
||||
|
||||
cfg.LoadDefaultsFromTomlStream(file);
|
||||
sawmill.Info("Loaded config preset: {Preset}", path);
|
||||
}
|
||||
}
|
||||
|
||||
private static void LoadBuildConfigPresets(IConfigurationManager cfg, IResourceManager res, ISawmill sawmill)
|
||||
{
|
||||
#if !FULL_RELEASE
|
||||
Load(CCVars.ConfigPresetDevelopment, "development");
|
||||
#endif
|
||||
#if DEBUG
|
||||
Load(CCVars.ConfigPresetDebug, "debug");
|
||||
#endif
|
||||
|
||||
void Load(CVarDef<bool> cVar, string name)
|
||||
{
|
||||
var path = $"{ConfigPresetsDirBuild}{name}.toml";
|
||||
if (cfg.GetCVar(cVar) && res.TryContentFileRead(path, out var file))
|
||||
{
|
||||
cfg.LoadDefaultsFromTomlStream(file);
|
||||
sawmill.Info("Loaded config preset: {Preset}", path);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user