using System.Collections.Generic; using UnityEngine; namespace Artees.UnitySemVer { /// /// Sets the build metadata automatically /// /// public abstract class SemVerAutoBuild { /// /// implementations /// public enum Type { /// /// Disables automatic build metadata /// Manual, /// /// Sets the build metadata to the /// Unity Cloud Build /// “build number” /// /// CloudBuildNumber } public static readonly IReadOnlyDictionary Instances = new Dictionary { {Type.Manual, new ManualBuild()}, {Type.CloudBuildNumber, new CloudBuildNumberBuild()} }; internal abstract string Get(string build); internal abstract string Set(string build); private class ManualBuild : SemVerAutoBuild { internal override string Get(string build) { return build; } internal override string Set(string build) { return build; } } private class CloudBuildNumberBuild : ReadOnly { internal override string Get(string build) { return CloudBuildManifest.Instance.IsLoaded ? CloudBuildManifest.Instance.BuildNumber.ToString() : string.Empty; } } public abstract class ReadOnly : SemVerAutoBuild { internal sealed override string Set(string build) { Debug.LogWarning("The build metadata is read-only"); return build; } } } }