static bool PackageAvailable(PackageInfo packageInfo)
        {
#if UNITY_2019_2_OR_NEWER
            var installedPackageInfo = PackageInfo.FindForAssetPath($"Packages/{packageInfo.name}");
            return(installedPackageInfo != null && installedPackageInfo.version == packageInfo.version);
#else
            return(packageInfo.status == PackageStatus.Available || packageInfo.status == PackageStatus.Error);
#endif
        }
        public void ConstPackageVersion_MatchesActualPackageVersion()
        {
            var packageInfo = PackageInfo.FindForAssetPath("Packages/com.unity.physics/package.json");
            var expectedPackageVersionMajorMinor = new Regex(@"\d+\.\d+(?=\.\d+)").Match(packageInfo.version).Value;

            Assume.That(expectedPackageVersionMajorMinor, Is.Not.Empty, "Unable to determine current package version.");

            Assert.That(
                HelpURLs.PackageVersion, Is.EqualTo(expectedPackageVersionMajorMinor),
                $"Update {nameof(HelpURLs)}.{nameof(HelpURLs.PackageVersion)}"
                );
        }
        public PackageInfo GetPackageInfo(string packageName)
        {
            if (PackageInfoList.ContainsKey(packageName))
            {
                return(PackageInfoList[packageName]);
            }

            PackageInfo packageInfo = PackageInfo.FindForAssetPath($"Packages/{packageName}");

            PackageInfoList.Add(packageName, packageInfo);
            return(packageInfo);
        }
Beispiel #4
0
        static AssemblyInfo GetAssemblyInfoFromAssemblyName(string assemblyName)
        {
            // by default let's assume it's not a package
            var assemblyInfo = new AssemblyInfo
            {
                name         = assemblyName,
                relativePath = "Assets",
                readOnly     = false
            };

            var asmDefPath = CompilationPipeline.GetAssemblyDefinitionFilePathFromAssemblyName(assemblyInfo.name);

            if (asmDefPath != null)
            {
                assemblyInfo.asmDefPath = asmDefPath;
                var folders = asmDefPath.Split('/');
                if (folders.Length > 2 && folders[0].Equals("Packages"))
                {
                    assemblyInfo.relativePath = Path.Combine(folders[0], folders[1]).Replace("\\", "/");
#if UNITY_2019_3_OR_NEWER
                    var info = PackageInfo.FindForAssetPath(asmDefPath);
                    if (info != null)
                    {
                        assemblyInfo.readOnly = info.source != PackageSource.Embedded && info.source != PackageSource.Local;
                    }
#else
                    assemblyInfo.readOnly = true;
#endif
                }
                else
                {
                    // non-package user-defined assembly
                }
            }
            else if (!assemblyInfo.name.StartsWith(DefaultAssemblyName))
            {
                Debug.LogErrorFormat("Assembly Definition cannot be found for " + assemblyInfo.name);
            }

            return(assemblyInfo);
        }