40 lines
1.3 KiB
C#
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())
|
|
;
|
|
}
|
|
} |