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; } }