using Newtonsoft.Json; using Newtonsoft.Json.Converters; using System.ComponentModel; using System.Runtime.CompilerServices; namespace ModpackUpdater; public class InstallAction { [DefaultValue(null)] public string? Id { get; set; } [DefaultValue(null)] public string? Name { get; set; } [DefaultValue(null)] public string? Website { get; set; } [DefaultValue(false)] public bool IsZip { get; set; } [DefaultValue(null)] public string? ZipPath { get; set; } [DefaultValue(null)] public string? DestPath { get; set; } [DefaultValue(null)] public string? SourceUrl { get; set; } [DefaultValue(SourceType.DirectLink)] [JsonConverter(typeof(StringEnumConverter))] public SourceType SourceType { get; set; } [DefaultValue(null)] public string? SourceOwner { get; set; } [DefaultValue(null)] public string? SourceName { get; set; } [DefaultValue(null)] public string? SourceRegex { get; set; } [DefaultValue(null)] public string? SourceTag { get; set; } [DefaultValue(Side.Both)] [JsonConverter(typeof(StringEnumConverter))] public Side Side { get; set; } = Side.Both; [DefaultValue(false)] public bool IsExtra { get; set; } [DefaultValue(null)] public string? TargetOption { get; set; } [JsonProperty, Obsolete] private string DownloadUrl { set => SourceUrl = value; } }