69 lines
1.9 KiB
C#
69 lines
1.9 KiB
C#
namespace Metadata.Extensions;
|
|
|
|
public static class EnvironmentExtensions
|
|
{
|
|
public static bool GetEnvironmentVariableAsBool(this string prefix, string varName, bool fallback = false)
|
|
{
|
|
var fullVarName = GetFullVariableName(prefix, varName);
|
|
|
|
var str = Environment.GetEnvironmentVariable(fullVarName);
|
|
|
|
if (string.IsNullOrEmpty(str))
|
|
{
|
|
return fallback;
|
|
}
|
|
|
|
return str.Trim().ToLower() switch
|
|
{
|
|
"true" => true,
|
|
"yes" => true,
|
|
"1" => true,
|
|
_ => false,
|
|
};
|
|
}
|
|
|
|
public static int GetEnvironmentVariableAsInt(this string prefix, string varName, int fallback = 0)
|
|
{
|
|
var fullVarName = GetFullVariableName(prefix, varName);
|
|
|
|
var str = Environment.GetEnvironmentVariable(fullVarName);
|
|
|
|
if (string.IsNullOrEmpty(str))
|
|
{
|
|
return fallback;
|
|
}
|
|
|
|
return int.TryParse(str, out var result) ? result : fallback;
|
|
}
|
|
|
|
public static string GetRequiredEnvironmentVariableAsString(this string prefix, string varName)
|
|
{
|
|
var fullVarName = GetFullVariableName(prefix, varName);
|
|
|
|
var str = Environment.GetEnvironmentVariable(fullVarName);
|
|
|
|
if (string.IsNullOrEmpty(str))
|
|
{
|
|
throw new InvalidOperationException($"Environment variable {fullVarName} is not set");
|
|
}
|
|
|
|
return str;
|
|
}
|
|
|
|
public static string GetOptionalEnvironmentVariableAsString(this string prefix, string varName, string? fallback = null)
|
|
{
|
|
var fullVarName = GetFullVariableName(prefix, varName);
|
|
|
|
var str = Environment.GetEnvironmentVariable(fullVarName);
|
|
|
|
if (string.IsNullOrEmpty(str))
|
|
{
|
|
return fallback;
|
|
}
|
|
|
|
return str;
|
|
}
|
|
|
|
private static string GetFullVariableName(string prefix, string varName) => $"{prefix}_{varName}";
|
|
}
|