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