using System;
using System.Collections;
using System.Collections.Generic;
namespace Robust.Shared.Configuration
{
internal static class EnvironmentVariables
{
///
/// The environment variable for configuring CVar overrides. The value
/// of the variable should be passed as key-value equalities separated by
/// semicolons.
///
public const string ConfigVarEnvironmentVariable = "ROBUST_CVARS";
public const string SingleVarPrefix = "ROBUST_CVAR_";
///
/// Get the CVar overrides defined in the relevant environment variable.
///
internal static IEnumerable<(string, string)> GetEnvironmentCVars()
{
// Handle ROBUST_CVARS.
var eVarString = Environment.GetEnvironmentVariable(ConfigVarEnvironmentVariable) ?? "";
foreach (var cVarPair in eVarString.Split(';', StringSplitOptions.RemoveEmptyEntries))
{
var pairParts = cVarPair.Split('=', 2);
yield return (pairParts[0], pairParts[1]);
}
// Handle ROBUST_CVAR_*
foreach (DictionaryEntry entry in Environment.GetEnvironmentVariables())
{
var key = (string)entry.Key;
var value = (string?)entry.Value;
if (value == null)
continue;
if (!key.StartsWith(SingleVarPrefix))
continue;
var varName = key[SingleVarPrefix.Length..].Replace("__", ".");
yield return (varName, value);
}
}
}
}