using System;
using UnityEngine;
namespace Artees.UnitySemVer
{
///
/// A parsed Unity Cloud Build manifest.
///
internal class CloudBuildManifest
{
private static CloudBuildManifest _instance;
public static CloudBuildManifest Instance => _instance ?? (_instance = new CloudBuildManifest());
///
/// Returns true if the manifest has been successfully loaded.
///
public readonly bool IsLoaded;
///
/// The Unity Cloud Build “build number” corresponding to this build.
///
public readonly int BuildNumber;
private CloudBuildManifest()
{
var manifestAsset = Resources.Load("UnityCloudBuildManifest.json");
if (manifestAsset == null) return;
var manifest = manifestAsset.text;
IsLoaded = true;
const string key = "\"buildNumber\"";
const StringComparison comparison = StringComparison.Ordinal;
var keyStart = manifest.IndexOf(key, comparison);
var valueStart = manifest.IndexOf("\"", keyStart + key.Length, comparison) + 1;
var valueEnd = manifest.IndexOf("\"", valueStart, comparison);
var buildNumber = manifest.Substring(valueStart, valueEnd - valueStart);
int.TryParse(buildNumber, out BuildNumber);
}
}
}