Files
Pilz.Updating/Pilz.Updating/UpdatePackageInfo.cs

40 lines
1.3 KiB
C#

using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Pilz.Json;
namespace Pilz.Updating;
public class UpdatePackageInfo(AppVersion version)
{
public string? Name { get; set; }
[JsonConverter(typeof(AppVersionStringJsonConverter))]
public AppVersion Version { get; set; } = version;
public UpdateNotes Notes { get; } = new();
public string? ExePath { get; set; }
public Dictionary<string, PackageSource> Packages = [];
[JsonConverter(typeof(StringEnumConverter))]
public UpdateType UpdateType { get; set; }
public PackageSource GetSource(string? distro)
{
if (distro == null || !Packages.TryGetValue(distro, out var definition))
definition = Packages.Values.FirstOrDefault();
return definition ?? throw new KeyNotFoundException("No package definition found!");
}
public string GetAddress(string? distro)
{
return GetSource(distro).Address
.Replace("{appversion}", Version.ToString())
.Replace("{version}", Version.Version.ToString())
.Replace("{channelstr}", Version.Channel.ToString())
.Replace("{channel}", ((int)Version.Channel).ToString())
.Replace("{build}", Version.Build.ToString())
;
}
}