// Copyright © WireMock.Net using System.Collections; using Stef.Validation; using WireMock.Settings; namespace WireMock.OpenTelemetry; /// /// A static helper class to parse commandline arguments into OpenTelemetryOptions. /// public static class OpenTelemetryOptionsParser { private const string Prefix = "OpenTelemetry"; /// /// Parse commandline arguments into OpenTelemetryOptions. /// /// The commandline arguments /// The environment settings (optional) /// The parsed options, or null if OpenTelemetry is not enabled /// Always returns true. public static bool TryParseArguments(string[] args, IDictionary? environment, out OpenTelemetryOptions? options) { Guard.HasNoNulls(args); var parser = new SimpleSettingsParser(); parser.Parse(args, environment); if (!parser.GetBoolValue($"{Prefix}Enabled")) { options = null; return true; } options = new OpenTelemetryOptions { ExcludeAdminRequests = parser.GetBoolValue($"{Prefix}ExcludeAdminRequests", defaultValue: true), OtlpExporterEndpoint = parser.GetStringValue($"{Prefix}OtlpExporterEndpoint") }; return true; } }