Utils.EnvironmentManager
2.0.1
See the version list below for details.
dotnet add package Utils.EnvironmentManager --version 2.0.1
NuGet\Install-Package Utils.EnvironmentManager -Version 2.0.1
<PackageReference Include="Utils.EnvironmentManager" Version="2.0.1" />
paket add Utils.EnvironmentManager --version 2.0.1
#r "nuget: Utils.EnvironmentManager, 2.0.1"
// Install Utils.EnvironmentManager as a Cake Addin #addin nuget:?package=Utils.EnvironmentManager&version=2.0.1 // Install Utils.EnvironmentManager as a Cake Tool #tool nuget:?package=Utils.EnvironmentManager&version=2.0.1
Utils.EnvironmentManager
The EnvironmentManager
namespace now provides a class EnvManager
that uses AutoMapper
package, for retrieving environment variable values and performing type conversions.
Note This documentation assumes a basic understanding of
AutoMapper
library. AutoMapper docs
Initialization
EnvManager
initialization can be achieved with or without a custom AutoMapper
configuration:
- Without a custom configuration:
var manager = new EnvManager();
- With a custom configuration:
var manager = new EnvManager(config: config);
Methods
GetEnvironmentValue
The method retrieves the value of the specified environment variable and converts it to the desired type using AutoMapper
.
Signature:
public object GetEnvironmentValue(Type type, string variableName, bool raiseException = false)
Parameters:
type
(Type): The type to which the environment variable's value should be converted.variableName
(string): The name of the environment variable.raiseException
(bool, optional): Specifies whether to raise an exception if the environment variable is null or empty, or when the conversion fails. Defaults to false.
Returns:
object
: The converted value of the environment variable.
GetEnvironmentValue<T>
This method retrieves the value of the specified environment variable and converts it to the specified type T
.
Signature:
public T GetEnvironmentValue<T>(string variableName, bool raiseException = false)
Parameters:
variableName
(string): The name of the environment variable.raiseException
(bool, optional): Specifies whether to raise an exception if the environment variable is null or empty, or when the conversion fails. Defaults to false.
Returns:
T
: The converted value of the environment variable.
Adding Custom Mappings
The library now uses AutoMapper
for type conversions.
Therefore, to add custom type conversions, you can utilize the EnvManagerMappingConfigurator
class.
Example:
var config = new EnvManagerMappingConfigurator()
.CreateMapFor(x => DateTime.ParseExact(x, "dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture))
.CreateMapFor(x => Enum.Parse<MyEnumeration>(x, true))
.Build();
var manager = new EnvManager(config: config);
DateTime customDateFormat = manager.GetEnvironmentValue<DateTime>("CUSTOM_DATE_FORMAT");
In this example, a custom date format is added using the CreateMapFor
method.
Also in this example adding mapping for a MyEnumeration
enum.
Once the custom mappings are added, the configuration is built and passed to the EnvManager
.
Logging
EnvManager
incorporates logging through the Microsoft's ILogger interface, providing insights into the operations and potential issues while working with environment variables.
Logger Initialization
You can pass an instance of ILogger<EnvManager>
when creating the EnvManager
.
If no logger is provided, a default instance of NullLogger<EnvManager>
is used, which means no logging output will be produced.
Example:
var logger = new LoggerFactory().CreateLogger<EnvManager>();
var manager = new EnvManager(logger: logger);
If you wish to use the default logger (which won't produce any log output):
var manager = new EnvManager();
Logging Scenarios
Here are some situations where the EnvManager
logs information:
- Warning: If an environment variable is null or empty and the
raiseException
parameter is set tofalse
, a warning log will be generated.
- Log Message:
"Environment variable '{VariableName}' is null or empty."
- Error: If there's a failed conversion of an environment variable and the
raiseException
parameter is set tofalse
, an error log will be created.
- Log Message:
"Failed to convert environment variable '{VariableName}' to type '{Type}'. Returning default value."
In both scenarios, the actual variable name and type (if applicable) will replace the placeholders {VariableName} and {Type}.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- AutoMapper (>= 12.0.1)
- Microsoft.Extensions.Logging (>= 7.0.0)
NuGet packages (5)
Showing the top 5 NuGet packages that depend on Utils.EnvironmentManager:
Package | Downloads |
---|---|
ConfiguredSqlConnection
The NuGet package is a collection of utilities for working with SQL Server database connections using environment settings and secure connection strings. |
|
BNBParty.GraphQLClient
GraphQL Client for BNBParty .NET |
|
EthSmartContractIO.SecretsProvider
A EthSmartContractIO module, that facilitates the secure creation of an Ethereum account and the extraction of secrets. |
|
DownloaderV3.Source.CovalentLastBlock
The module for fetching the latest block data using Covalent API in the DownloaderV3 system.< |
|
DownloaderV3.Source.CovalentDocument
The module for fetching, decoding, and saving blockchain event data using Covalent API in the DownloaderV3 system. |
GitHub repositories
This package is not used by any popular GitHub repositories.
- Simplified initialize of EnvManager
- Added Logger via 'Microsoft.Extensions.Logging'