Files
WireMock.Net-wiremock/src/WireMock.Net.Testcontainers/Utils/TestcontainersUtils.cs
2024-12-31 18:24:29 +01:00

31 lines
1.1 KiB
C#

// Copyright © WireMock.Net
using System;
using System.Runtime.InteropServices;
using DotNet.Testcontainers.Configurations;
using System.Threading.Tasks;
namespace WireMock.Net.Testcontainers.Utils;
/// <summary>
/// Some utility methods for containers.
/// </summary>
public static class TestcontainersUtils
{
/// <summary>
/// Get the OS platform of the Docker image.
/// </summary>
public static Lazy<Task<OSPlatform>> GetImageOSAsync = new(async () =>
{
if (TestcontainersSettings.OS.DockerEndpointAuthConfig == null)
{
throw new InvalidOperationException($"The {nameof(TestcontainersSettings.OS.DockerEndpointAuthConfig)} is null. Check if Docker is started.");
}
using var dockerClientConfig = TestcontainersSettings.OS.DockerEndpointAuthConfig.GetDockerClientConfiguration();
using var dockerClient = dockerClientConfig.CreateClient();
var version = await dockerClient.System.GetVersionAsync();
return version.Os.IndexOf("Windows", StringComparison.OrdinalIgnoreCase) >= 0 ? OSPlatform.Windows : OSPlatform.Linux;
});
}