using BS.Shared; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BeWo.Core { public class BeWoAppVersion { public Version BaseVersion { get; } public BeWoClientReleaseStage Stage { get; } public Version FeatureVersion { get; } public BeWoClientFeature Feature { get; } public static bool IsInDeveloperMode { get; private set; } public BeWoAppVersion(Version baseVersion, BeWoClientReleaseStage stage, Version stageVersion, BeWoClientFeature feature = BeWoClientFeature.None) { BaseVersion = baseVersion; Stage = stage; FeatureVersion = stageVersion; Feature = feature; } public void TryActiveDeveloperMode(string[] args) { if (Stage != BeWoClientReleaseStage.Sandbox) return; #if !DEBUG if (args.All(x => x != "/bewodevmode" && x != "--bewodevmode")) return; #endif if (IsInDeveloperMode) throw new NotImplementedException(); IsInDeveloperMode = true; } public override string ToString() { var sb = new StringBuilder(); sb.Append($"Version {BaseVersion}"); if (Stage == BeWoClientReleaseStage.Release) return sb.ToString(); sb.Append(" "); if (Feature != BeWoClientFeature.None) { // https://stackoverflow.com/questions/9684619/label-doesnt-display-character sb.Append(Feature.ToString().ToLower()); sb.Append("__"); sb.Append(FeatureVersion); sb.Append("__"); } sb.Append($"{Stage.ToString().ToLower()}"); if (Stage == BeWoClientReleaseStage.Sandbox || Stage == BeWoClientReleaseStage.ProofOfConcept) { sb.Append($" (dev:{(IsInDeveloperMode ? "1" : "0")})"); } return sb.ToString(); } } }