< Summary - Envilder .NET SDK

Information
Class: Envilder.Infrastructure.Configuration.ConfigurationBuilderExtensions
Assembly: Envilder
File(s): /home/runner/work/envilder/envilder/src/sdks/dotnet/Infrastructure/Configuration/ConfigurationBuilderExtensions.cs
Tag: 299_25910610327
Line coverage
100%
Covered lines: 9
Uncovered lines: 0
Coverable lines: 9
Total lines: 45
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
AddEnvilder(...)100%44100%

File(s)

/home/runner/work/envilder/envilder/src/sdks/dotnet/Infrastructure/Configuration/ConfigurationBuilderExtensions.cs

#LineLine coverage
 1namespace Envilder.Infrastructure.Configuration;
 2
 3using Envilder.Application;
 4using Envilder.Domain;
 5using Microsoft.Extensions.Configuration;
 6using System;
 7using System.IO;
 8
 9/// <summary>
 10/// Extension methods for integrating Envilder into the
 11/// <see cref="IConfigurationBuilder"/> pipeline.
 12/// </summary>
 13public static class ConfigurationBuilderExtensions
 14{
 15  /// <summary>
 16  /// Adds an Envilder configuration source that reads a JSON map file from disk,
 17  /// resolves every mapping via the provider specified in the file's <c>$config</c>
 18  /// section, and exposes the results as <see cref="IConfiguration"/> keys.
 19  /// </summary>
 20  /// <param name="builder">The configuration builder.</param>
 21  /// <param name="mapFilePath">Absolute or relative path to the JSON map file.</param>
 22  /// <param name="options">Optional runtime overrides (provider, profile, vault URL).</param>
 23  /// <returns>The same <see cref="IConfigurationBuilder"/> for chaining.</returns>
 24  public static IConfigurationBuilder AddEnvilder(this IConfigurationBuilder builder,
 25                          string mapFilePath,
 26                          EnvilderOptions? options = null)
 27  {
 128    if (string.IsNullOrWhiteSpace(mapFilePath))
 29    {
 130      throw new ArgumentException("Map file path cannot be null or empty.", nameof(mapFilePath));
 31    }
 32
 133    if (!File.Exists(mapFilePath))
 34    {
 135      throw new FileNotFoundException("Map file not found.", mapFilePath);
 36    }
 37
 138    var json = File.ReadAllText(mapFilePath);
 139    var mapFile = new MapFileParser().Parse(json);
 140    var provider = SecretProviderFactory.Create(mapFile.Config, options);
 141    var client = new EnvilderClient(provider);
 42
 143    return builder.Add(new EnvilderConfigurationSource(client, mapFile));
 44  }
 45}