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"); }
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"); }
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"); }
/// <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"); } }
/// <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"); } }
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); } }
PackageInfo GetSelectedVersion() { return(Expose.FromObject(packageDetails).Get("SelectedPackage").As <PackageInfo>()); }
UpmPackageVersion GetSelectedVersion() { return(Expose.FromObject(packageDetails).Get("targetVersion").As <UpmPackageVersion>()); }
/// <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); } }