using System;
using System.Diagnostics.CodeAnalysis;
using StardewModdingAPI.Toolkit.Framework;
namespace StardewModdingAPI.Toolkit.Utilities
{
/// Provides methods for fetching environment information.
public static class EnvironmentUtility
{
/*********
** Fields
*********/
/// The cached platform.
private static Platform? CachedPlatform;
/*********
** Public methods
*********/
/// Detect the current OS.
public static Platform DetectPlatform()
{
Platform? platform = EnvironmentUtility.CachedPlatform;
if (platform == null)
{
string rawPlatform = LowLevelEnvironmentUtility.DetectPlatform();
EnvironmentUtility.CachedPlatform = platform = (Platform)Enum.Parse(typeof(Platform), rawPlatform, ignoreCase: true);
}
return platform.Value;
}
/// Get the human-readable OS name and version.
/// The current platform.
[SuppressMessage("ReSharper", "EmptyGeneralCatchClause", Justification = "Error suppressed deliberately to fallback to default behaviour.")]
public static string GetFriendlyPlatformName(Platform platform)
{
return LowLevelEnvironmentUtility.GetFriendlyPlatformName(platform.ToString());
}
/// Get the name of the Stardew Valley executable.
/// The current platform.
public static string GetExecutableName(Platform platform)
{
return LowLevelEnvironmentUtility.GetExecutableName(platform.ToString());
}
/// Get whether the platform uses Mono.
/// The current platform.
public static bool IsMono(this Platform platform)
{
return LowLevelEnvironmentUtility.IsMono(platform.ToString());
}
}
}