using System;
using System.Text.Json.Serialization;
namespace Artemis.Core;
///
/// Specifies OS platforms a plugin may support.
///
[Flags]
[JsonConverter(typeof(JsonStringEnumConverter))]
public enum PluginPlatform
{
/// The Windows platform.
Windows = 1,
/// The Linux platform.
Linux = 2,
/// The OSX platform.
// ReSharper disable once InconsistentNaming
OSX = 4
}
internal static class PluginPlatformExtensions
{
///
/// Determines whether the provided platform matches the current operating system.
///
internal static bool MatchesCurrentOperatingSystem(this PluginPlatform? platform)
{
if (platform == null)
return true;
if (OperatingSystem.IsWindows())
return platform.Value.HasFlag(PluginPlatform.Windows);
if (OperatingSystem.IsLinux())
return platform.Value.HasFlag(PluginPlatform.Linux);
if (OperatingSystem.IsMacOS())
return platform.Value.HasFlag(PluginPlatform.OSX);
return false;
}
}