Exemplo n.º 1
0
        public void ViewDocClick()
        {
            var packageInfo = GetSelectedPackage();

            if (packageInfo.source == PackageSource.Git)
            {
                var docsFolder = Path.Combine(packageInfo.resolvedPath, "Documentation~");
                if (!Directory.Exists(docsFolder))
                {
                    docsFolder = Path.Combine(packageInfo.resolvedPath, "Documentation");
                }
                if (Directory.Exists(docsFolder))
                {
                    var mdFiles = Directory.GetFiles(docsFolder, "*.md", SearchOption.TopDirectoryOnly);
                    var docsMd  = mdFiles.FirstOrDefault(d => Path.GetFileName(d).ToLower() == "index.md")
                                  ?? mdFiles.FirstOrDefault(d => Path.GetFileName(d).ToLower() == "tableofcontents.md") ?? mdFiles.FirstOrDefault();
                    if (!string.IsNullOrEmpty(docsMd))
                    {
                        Application.OpenURL(new Uri(docsMd).AbsoluteUri);
                        return;
                    }
                }
            }
            Expose.FromObject(GetPackageDetails()).Call("ViewDocClick");
        }
Exemplo n.º 2
0
        public void ViewLicensesClick()
        {
            var packageInfo = GetSelectedPackage();

            if (packageInfo.source == PackageSource.Git)
            {
                var licenseFile = Path.Combine(packageInfo.resolvedPath, "LICENSE.md");
                if (File.Exists(licenseFile))
                {
                    Application.OpenURL(new Uri(licenseFile).AbsoluteUri);
                    return;
                }
            }
            Expose.FromObject(GetPackageDetails()).Call("ViewLicensesClick");
        }
Exemplo n.º 3
0
        public void ViewChangelogClick()
        {
            var packageInfo = GetSelectedPackage();

            if (packageInfo.source == PackageSource.Git)
            {
                var changelogFile = Path.Combine(packageInfo.resolvedPath, "CHANGELOG.md");
                if (File.Exists(changelogFile))
                {
                    Application.OpenURL(new Uri(changelogFile).AbsoluteUri);
                    return;
                }
            }
            Expose.FromObject(GetPackageDetails()).Call("ViewChangelogClick");
        }
Exemplo n.º 4
0
        /// <summary>
        /// On click 'Remove package' callback.
        /// </summary>
        public void RemoveClick()
        {
            Debug.LogFormat("[Bridge.UpdateClick]");
            reloading = false;
            Debug.LogFormat("[RemoveClick]");
            var selectedPackage = GetSelectedPackage();

            if (selectedPackage.source == PackageSource.Git)
            {
                PackageUtils.UninstallPackage(selectedPackage.name);
            }
            else
            {
                Expose.FromObject(packageDetails).Call("RemoveClick");
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// On click 'Update package' callback.
        /// </summary>
        public void UpdateClick()
        {
            Debug.LogFormat("[Bridge.UpdateClick]");
            reloading = false;
            var selectedPackage = GetSelectedPackage();

            if (selectedPackage.source == PackageSource.Git)
            {
                string packageId = selectedPackage.packageId;
                string url       = PackageUtils.GetRepoUrl(packageId);
#if UNITY_2019_3_OR_NEWER
                string refName = GetSelectedVersion().packageInfo.git.revision;
#else
                string refName = GetSelectedVersion().VersionId.Split('@')[1];
#endif
                PackageUtils.UninstallPackage(selectedPackage.name);
                PackageUtils.InstallPackage(selectedPackage.name, url, refName);
            }
            else
            {
                Expose.FromObject(packageDetails).Call("UpdateClick");
            }
        }
Exemplo n.º 6
0
        void UpdatePackageVersions(Package package, IEnumerable <string> versions)
        {
            Debug.LogFormat("[UpdatePackageVersions] packageName = {0}, count = {1}", package.Current.Name, versions.Count());
            var pInfo        = package.Current;
            var json         = JsonUtility.ToJson(pInfo);
            var versionInfos = versions
                               .Select(ver =>
            {
                var splited  = ver.Split(',');
                var refName  = splited[0];
                var version  = splited[1];
                var newPInfo = JsonUtility.FromJson(json, typeof(PackageInfo)) as PackageInfo;

                newPInfo.Version = SemVersion.Parse(version == refName ? version : version + "-" + refName);

                var exPackageInfo = Expose.FromObject(newPInfo);
                var memberName    = 0 < Application.unityVersion.CompareTo("2019.2") ? "IsInstalled" : "IsCurrent";
                exPackageInfo.Set(memberName, false);

                newPInfo.IsVerified = false;
                newPInfo.Origin     = (PackageSource)99;
                newPInfo.Info       = pInfo.Info;
                newPInfo.PackageId  = string.Format("{0}@{1}", newPInfo.Name, refName);
                return(newPInfo);
            })
                               .Concat(new[] { pInfo })
                               .Where(p => p == pInfo || p.Version != pInfo.Version)
                               .ToArray();

            if (0 < versionInfos.Length)
            {
                Debug.LogFormat("[UpdatePackageVersions] package source changing");
                versionInfos.OrderBy(v => v.Version).Last().IsLatest = true;
                Expose.FromObject(package).Set("source", versionInfos);
            }
        }
Exemplo n.º 7
0
 PackageInfo GetSelectedVersion()
 {
     return(Expose.FromObject(packageDetails).Get("SelectedPackage").As <PackageInfo>());
 }
Exemplo n.º 8
0
 UpmPackageVersion GetSelectedVersion()
 {
     return(Expose.FromObject(packageDetails).Get("targetVersion").As <UpmPackageVersion>());
 }
Exemplo n.º 9
0
        /// <summary>
        /// Update package info.
        /// </summary>
#if UNITY_2019_3_OR_NEWER
        void UpdatePackageVersions(UpmPackage package, IEnumerable <string> versions)
        {
            var pInfo = package.installedVersion as UpmPackageVersion;
            var json  = JsonUtility.ToJson(pInfo.packageInfo);

            string packageName, repoUrl, installedRefName;

            PackageUtils.SplitPackageId(pInfo.uniqueId, out packageName, out repoUrl, out installedRefName);

            Debug.LogFormat("[UpdatePackageVersions] packageName = {0}, count = {1}, current = {2}", package.name, versions.Count(), pInfo.version);
            var versionInfos = versions
                               .Select(ver =>
            {
                Debug.LogFormat("[UpdatePackageVersions] version = {0}", ver);
                var splited = ver.Split(',');
                var refName = splited[0];
                var version = splited[1];
                var semver  = SemVersion.Parse(version == refName ? version : version + "-" + refName);

                var info = JsonUtility.FromJson <PackageInfo>(json);
                Expose.FromObject(info).Set("m_Version", version);
                Expose.FromObject(info).Set("m_Git", new GitInfo("", refName));

                var p = new UpmPackageVersion(info, false, semver, pInfo.displayName);

                // Update tag.
                PackageTag tag = PackageTag.Git | PackageTag.Installable | PackageTag.Removable;
                if ((semver.Major == 0 && string.IsNullOrEmpty(semver.Prerelease)) ||
                    PackageTag.Preview.ToString().Equals(semver.Prerelease.Split('.')[0], StringComparison.InvariantCultureIgnoreCase))
                {
                    tag |= PackageTag.Preview;
                }

                if (semver.IsRelease())
                {
                    tag |= PackageTag.Release;
                }
                else
                {
                    if ((semver.Major == 0 && string.IsNullOrEmpty(semver.Prerelease)) ||
                        PackageTag.Preview.ToString().Equals(semver.Prerelease.Split('.')[0], StringComparison.InvariantCultureIgnoreCase))
                    {
                        tag |= PackageTag.Preview;
                    }
                }

                Expose.FromObject(p).Set("m_Tag", tag);
                Expose.FromObject(p).Set("m_IsFullyFetched", true);
                Expose.FromObject(p).Set("m_PackageId", string.Format("{0}@{1}#{2}", packageName, repoUrl, semver));

                return(p);
            })
                               .Concat(new[] { pInfo })
                               .Where(p => p == pInfo || p.version != pInfo.version)
                               .OrderBy(x => x.version)
                               .ToArray();

            if (0 < versionInfos.Length)
            {
                // Add verify tag on latest version.
                var latest = versionInfos
                             .Where(x => x.version.IsRelease())
                             .LastOrDefault();
                if (latest != null)
                {
                    var tag = Expose.FromObject(latest).Get("m_Tag").As <PackageTag>();
                    tag |= PackageTag.Verified;
                    Expose.FromObject(latest).Set("m_Tag", tag);
                }

                // Unlock version tag.
                var t = Expose.FromObject(pInfo).Get("m_Tag").As <PackageTag>();
                Expose.FromObject(pInfo).Set("m_Tag", t & ~PackageTag.VersionLocked);

                Debug.LogFormat("[UpdatePackageVersions] package source changing");
                package.UpdateVersions(versionInfos);
            }
        }