namespace Flaro.Api; /// Welche Version läuft — und welcher Build genau. /// /// /// /// Warum zwei Angaben. Die Version sagt, welcher Stand gemeint ist; /// sie steht fest und ändert sich nur von Hand. Der Build sagt, welches /// Abbild tatsächlich läuft, und ändert sich bei jedem Bau — auch /// dann, wenn am Quelltext nichts anders ist. /// /// /// Und warum das nötig wurde. Es hat einen halben Tag gekostet: zwei /// Funktionen waren nachweislich im Quelltext und auf dem Server trotzdem /// nicht zu sehen. Ob dort ein älteres Abbild lief, liess sich nicht /// feststellen — der Server sagte es nirgends. Jede Fehlersuche lief damit /// ins Leere, weil die erste Frage unbeantwortbar war: reden wir vom selben /// Build? /// /// /// Sechs Zeichen, Grossbuchstaben und Ziffern. Kurz genug, um sie /// vorzulesen und abzutippen, lang genug, um nicht zufällig zweimal /// vorzukommen. Ohne I, O, 0 und 1, weil die /// beim Vorlesen verwechselt werden. /// /// public static class Buildkennung { /// Die feste Version. Steigt nur, wenn jemand sie hier ändert. public const string Version = "1.0.0"; /// Die Kennung dieses Abbilds — oder DEV ausserhalb eines Containers. /// /// /// Gesetzt wird sie beim Bau des Abbilds über FLARO_BUILD. Fehlt /// sie, läuft der Server aus dem Quellbaum: dann ist DEV die /// ehrlichere Angabe als eine erfundene Kennung, die nichts bezeichnet. /// public static string Build { get; } = Environment.GetEnvironmentVariable("FLARO_BUILD") is { Length: > 0 } wert ? wert.Trim() : "DEV"; /// „1.0.0 · K7F2QX" — für Protokoll und Anzeige. public static string Beides => $"{Version} · {Build}"; }