TeamCity.dotCover/Settings.cs (32 lines of code) (raw):

namespace TeamCity.dotCover; // ReSharper disable once ClassNeverInstantiated.Global internal class Settings : ISettings { private const string VarPrefix = "TC_DC_"; private readonly Dictionary<string, string> _vars = new Dictionary<string, string>(); public Settings( IEnvironment environment) { foreach (var name in environment.EnvironmentVariables.Where(i => i.ToUpper().StartsWith(VarPrefix))) { if (name.Length > VarPrefix.Length && environment.TryGetEnvironmentVariable(name, out var val)) { var key = name.Substring(VarPrefix.Length, name.Length - VarPrefix.Length); switch (key.ToUpper()) { case "TOOL_PATH": ToolPath = val; break; case "TRACE_FILE": TraceFile = val; break; default: _vars[key] = val; break; } } } } public string? ToolPath { get; } public string? TraceFile { get; } public IReadOnlyDictionary<string, string> DotCoverArgs => _vars; }