Read and validate environment variables with defaults
C#
using System;
using System.Globalization;
static string RequireEnv(string name) =>
Environment.GetEnvironmentVariable(name) is { Length: > 0 } value
? value
: throw new InvalidOperationException($"Missing environment variable: {name}");
static int IntEnv(string name, int fallback, int min = 0, int max = int.MaxValue)
{
string? raw = Environment.GetEnvironmentVariable(name);
if (string.IsNullOrWhiteSpace(raw)) return fallback;
if (!int.TryParse(raw, NumberStyles.Integer, CultureInfo.InvariantCulture, out int value))
throw new InvalidOperationException($"{name} must be an integer, got '{raw}'");
if (value < min || value > max)
throw new InvalidOperationException($"{name} must be within [{min}, {max}]");
return value;
}