Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions Robust.Shared/Configuration/ConfigurationManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,24 @@ public HashSet<string> LoadFromTomlStream(Stream file)
return LoadFromTomlTable(tblRoot);
}

/// <inheritdoc />
public HashSet<string> ValidateTomlStream(Stream file)
{
TomlTable tblRoot;
try
{
tblRoot = Toml.ReadStream(file);
}
catch (Exception e)
{
_sawmill.Error("Unable to load configuration from table:\n{0}", e);
return [];
}

return ValidateTomlTable(tblRoot);
}

/// <inheritdoc />
private HashSet<string> LoadFromTomlTable(TomlTable table)
{
var loaded = new HashSet<string>();
Expand All @@ -98,6 +116,17 @@ private HashSet<string> LoadFromTomlTable(TomlTable table)
return loaded;
}

/// <inheritdoc />
private HashSet<string> ValidateTomlTable(TomlTable table)
{
var loaded = new HashSet<string>();

foreach (var (cvar, _) in ParseCVarValuesFromToml(table))
loaded.Add(cvar);

return loaded;
}

private void RunDeferredInvokeCallbacks(in ValueList<ValueChangedInvoke> callbackEvents)
{
foreach (var callback in callbackEvents)
Expand Down
16 changes: 16 additions & 0 deletions Robust.Shared/Configuration/IConfigurationManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,24 @@ public interface IConfigurationManager
/// </summary>
void SaveToTomlStream(Stream stream, IEnumerable<string> cvars);

/// <summary>
/// Load a TOML config file, using all CVar values specified inside.
/// </summary>
/// <remarks>
/// All CVars in the TOML file must be registered when this function is called.
/// </remarks>
/// <returns>A set of all CVars touched.</returns>
HashSet<string> LoadFromTomlStream(Stream stream);

/// <summary>
/// Load a TOML config file and try and parse its contents without side-effects.
/// </summary>
/// <remarks>
/// All CVars in the TOML file must be registered when this function is called.
/// </remarks>
/// <returns>A set of all CVars that would be touched by this stream.</returns>
HashSet<string> ValidateTomlStream(Stream stream);

/// <summary>
/// Load a TOML config file and use the CVar values specified as an <see cref="OverrideDefault"/>.
/// </summary>
Expand Down
Loading