static void ParseBuildType(string input, SemVer expected)
        {
            SemVer info;

            Assert.IsTrue(SemVer.TryGetVersionInfo(input, out info));
            Assert.AreEqual(expected, info, "input: " + input);
        }
        public static void ParseMajorMinorPatchWithJunkAfter()
        {
            SemVer info;

            var expected = new SemVer(1, 0, 0, -1, "12text");

            Assert.IsTrue(SemVer.TryGetVersionInfo("1.0.0-12text", out info));
            Assert.AreEqual(expected, info);

            expected = new SemVer(1, 0, 0, 3, "preview");
            Assert.IsTrue(SemVer.TryGetVersionInfo("1.0.0-preview.3+extra-meta-data-here", out info));
            Assert.AreEqual(expected, info);
        }
        internal static bool TryGetPackageVersion(out SemVer version)
        {
            version = new SemVer();

#if UNITY_2019_2_OR_NEWER
            var assembly = Assembly.GetExecutingAssembly();
            var info     = PackageManager.PackageInfo.FindForAssembly(assembly);
            return(SemVer.TryGetVersionInfo(info.version, out version));
#else
            try
            {
                var packageInfo = FileUtility.GetProBuilderInstallDirectory() + "/package.json";
                var contents    = File.ReadAllText(packageInfo);
                var info        = JsonUtility.FromJson <PackageInfo>(contents);
                return(SemVer.TryGetVersionInfo(info.version, out version));
            }
            catch
            {
                return(false);
            }
#endif
        }