private List <PackageData> GetPackagesFromPackagesLockJson()
        {
            if (!myPackagesLockPath.ExistsFile)
            {
                myLogger.Verbose("packages-lock.json does not exist");
                return(null);
            }

            if (myManifestPath.ExistsFile && ShouldSkipPackagesLock())
            {
                myLogger.Info("packages-lock.json is out of date. Skipping");
                return(null);
            }

            myLogger.Verbose("Getting packages from packages-lock.json");

            var appPath = myUnityVersion.GetActualAppPathForSolution();
            var builtInPackagesFolder = UnityInstallationFinder.GetBuiltInPackagesFolder(appPath);

            return(myLogger.CatchSilent(() =>
            {
                var packagesLockJson = PackagesLockJson.FromJson(myPackagesLockPath.ReadAllText2().Text);

                var packages = new List <PackageData>();
                foreach (var(id, details) in packagesLockJson.Dependencies)
                {
                    packages.Add(GetPackageData(id, details, builtInPackagesFolder));
                }

                return packages;
            }));
        }
        public static FileSystemPath GetCgIncludeFolderPath(UnityVersion unityVersion)
        {
            var path = unityVersion.GetActualAppPathForSolution();

            if (path.IsEmpty)
            {
                return(FileSystemPath.Empty);
            }

            var contentPath = UnityInstallationFinder.GetApplicationContentsPath(path);

            return(contentPath.Combine("CGIncludes"));
        }
        private static void NotifyFrontend(UnityHost host, UnityVersion unityVersion)
        {
            var version         = unityVersion.GetActualVersionForSolution();
            var applicationPath = unityVersion.GetActualAppPathForSolution();

            if (PlatformUtil.RuntimePlatform == PlatformUtil.Platform.MacOsX && !applicationPath.ExistsDirectory ||
                PlatformUtil.RuntimePlatform != PlatformUtil.Platform.MacOsX && !applicationPath.ExistsFile)
            {
                var info = UnityInstallationFinder.GetApplicationInfo(version);
                if (info == null)
                {
                    return;
                }
                applicationPath = info.Path;
                version         = info.Version;
            }

            host.PerformModelAction(rd =>
            {
                // ApplicationPath may be already set via UnityEditorProtocol, which will obviously be correct
                if (!rd.ApplicationPath.HasValue())
                {
                    rd.ApplicationPath.SetValue(applicationPath.FullPath);
                }

                if (!rd.ApplicationContentsPath.HasValue())
                {
                    var contentsPath = UnityInstallationFinder.GetApplicationContentsPath(applicationPath);
                    if (!contentsPath.IsEmpty)
                    {
                        rd.ApplicationContentsPath.SetValue(contentsPath.FullPath);
                    }
                }
                if (!rd.ApplicationVersion.HasValue() && version != null)
                {
                    rd.ApplicationVersion.SetValue(UnityVersion.VersionToString(version));
                }
            });
        }
Exemple #4
0
        private void NotifyFrontend(UnityHost host, UnityVersion unityVersion)
        {
            var version         = unityVersion.GetActualVersionForSolution();
            var applicationPath = unityVersion.GetActualAppPathForSolution();

            if (PlatformUtil.RuntimePlatform == PlatformUtil.Platform.MacOsX && !applicationPath.ExistsDirectory ||
                PlatformUtil.RuntimePlatform != PlatformUtil.Platform.MacOsX && !applicationPath.ExistsFile)
            {
                var info = UnityInstallationFinder.GetApplicationInfo(version);
                if (info == null)
                {
                    return;
                }
                applicationPath = info.Path;
                version         = info.Version;
            }

            host.PerformModelAction(rd =>
            {
                // if model is there, then ApplicationPath was already set via UnityEditorProtocol, it would be more correct than any counted value
                if (myUnityEditorProtocol.UnityModel.Value != null)
                {
                    return;
                }

                rd.ApplicationPath.SetValue(applicationPath.FullPath);
                var contentsPath = UnityInstallationFinder.GetApplicationContentsPath(applicationPath);
                if (!contentsPath.IsEmpty)
                {
                    rd.ApplicationContentsPath.SetValue(contentsPath.FullPath);
                }
                if (version != null)
                {
                    rd.ApplicationVersion.SetValue(UnityVersion.VersionToString(version));
                }
            });
        }