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}";
}