using System; using System.Collections.Generic; using System.Text.Json.Serialization; namespace Deploymentcenter.Client.Models { /// /// Model for per-package manifest.json stored inside package.tar.gz /// and beside it on the LEMP release server. /// public class PackageManifest { [JsonPropertyName("projectId")] public string ProjectId { get; set; } = string.Empty; [JsonPropertyName("version")] public string Version { get; set; } = string.Empty; [JsonPropertyName("channel")] public string Channel { get; set; } = "prod"; /// /// Laufzeitkennung des Pakets ("win-x64", "linux-x64", ...) oder /// "any". Fehlt das Feld, stammt das Manifest aus der Zeit vor der /// Plattform-Dimension und gilt als plattformunabhaengig. /// [JsonPropertyName("platform")] public string Platform { get; set; } = PlatformId.Any; [JsonPropertyName("buildDate")] public string BuildDate { get; set; } = string.Empty; [JsonPropertyName("gitCommit")] public string GitCommit { get; set; } = string.Empty; [JsonPropertyName("gitCommitShort")] public string GitCommitShort { get; set; } = string.Empty; [JsonPropertyName("changelog")] public string Changelog { get; set; } = string.Empty; /// /// Muster fuer Dateien, die zwar im Paket liegen, eine vorhandene /// Datei am Ziel aber nicht ersetzen duerfen - typischerweise /// Konfigurationsvorlagen wie appsettings.json. /// /// Ausschluss beim Packen und Schutz beim Anwenden sind zwei /// verschiedene Dinge. Wer eine Konfigurationsvorlage ausliefern will, /// kann sie nicht einfach vom Paket ausnehmen; sie darf nur beim /// Update nicht ueber die eingerichtete Fassung des Zielsystems /// geschrieben werden. /// [JsonPropertyName("preserve")] public List Preserve { get; set; } = new List(); [JsonPropertyName("files")] public List Files { get; set; } = new List(); } /// /// File entry item inside manifest.json for integrity checking and repair. /// public class PackageFileEntry { [JsonPropertyName("path")] public string Path { get; set; } = string.Empty; [JsonPropertyName("sha256")] public string Sha256 { get; set; } = string.Empty; [JsonPropertyName("sizeBytes")] public long SizeBytes { get; set; } } }