2 using System.Collections.Generic;
14 private const string builtinPackageDocsUrlKey =
"Scripting API: ";
17 public string DisplayName;
18 private string _PackageId;
20 public string Description;
21 public string Category;
22 public PackageState State;
23 public bool IsCurrent;
26 public PackageSource Origin;
27 public List<Error> Errors;
28 public bool IsVerified;
31 public PackageManager.PackageInfo Info {
get;
set; }
33 public string PackageId {
36 if (!
string.IsNullOrEmpty(_PackageId ))
38 return string.Format(
"{0}@{1}", Name.ToLower(), Version);
47 public string VersionId {
get {
return string.Format(
"{0}@{1}", Name.ToLower(), Version); } }
48 public string ShortVersionId {
get {
return string.Format(
"{0}@{1}", Name.ToLower(), Version.ShortVersion()); } }
50 public string BuiltInDescription {
get {
52 return string.Format(
"This built in package controls the presence of the {0} module.", DisplayName);
54 return Description.Split(
new[] {builtinPackageDocsUrlKey}, StringSplitOptions.None)[0];
57 private static Version ParseShortVersion(
string shortVersionId)
61 var versionToken = shortVersionId.Split(
'@')[1];
62 return new Version(versionToken);
72 public static string GetPackageUrlRedirect(
string packageName,
string shortVersionId)
75 if (packageName ==
"com.unity.ads")
76 redirectUrl =
"https://docs.unity3d.com/Manual/UnityAds.html";
77 else if (packageName ==
"com.unity.analytics")
79 if (ParseShortVersion(shortVersionId) <
new Version(3, 2))
80 redirectUrl =
"https://docs.unity3d.com/Manual/UnityAnalytics.html";
82 else if (packageName ==
"com.unity.purchasing")
83 redirectUrl =
"https://docs.unity3d.com/Manual/UnityIAP.html";
84 else if (packageName ==
"com.unity.standardevents")
85 redirectUrl =
"https://docs.unity3d.com/Manual/UnityAnalyticsStandardEvents.html";
86 else if (packageName ==
"com.unity.xiaomi")
87 redirectUrl =
"https://unity3d.com/cn/partners/xiaomi/guide";
88 else if (packageName ==
"com.unity.shadergraph")
90 if (ParseShortVersion(shortVersionId) <
new Version(4, 1))
91 redirectUrl =
"https://github.com/Unity-Technologies/ShaderGraph/wiki";
97 public bool RedirectsToManual(
PackageInfo packageInfo)
99 return !
string.IsNullOrEmpty(GetPackageUrlRedirect(packageInfo.Name, packageInfo.ShortVersionId));
105 return !RedirectsToManual(packageInfo);
108 public string GetDocumentationUrl()
112 if (!
string.IsNullOrEmpty(Description))
114 var split = Description.Split(
new[] {builtinPackageDocsUrlKey}, StringSplitOptions.None);
115 if (split.Length > 1)
119 return string.Format(
"http://docs.unity3d.com/Packages/{0}/index.html", ShortVersionId);
122 public string GetChangelogUrl()
124 return string.Format(
"http://docs.unity3d.com/Packages/{0}/changelog/CHANGELOG.html", ShortVersionId);
127 public string GetLicensesUrl()
129 var url =
string.Format(
"http://docs.unity3d.com/Packages/{0}/license/index.html", ShortVersionId);
130 if (RedirectsToManual(
this))
131 url =
"https://unity3d.com/legal/licenses/Unity_Companion_License";
143 return Name == other.Name && Version == other.Version;
146 public override int GetHashCode()
148 return PackageId.GetHashCode();
151 public bool HasVersionTag(
string tag)
156 return String.Equals(Version.
Prerelease.Split(
'.').First(), tag, StringComparison.CurrentCultureIgnoreCase);
159 public bool HasVersionTag(PackageTag tag)
161 return HasVersionTag(tag.ToString());
166 public bool IsPreRelease
168 get {
return !
string.IsNullOrEmpty(Version.
Prerelease) || Version.
Major == 0; }
171 public bool IsPreview
173 get {
return HasVersionTag(PackageTag.preview) || Version.
Major == 0; }
177 public bool IsUserVisible
179 get {
return IsCurrent ||
string.IsNullOrEmpty(Version.
Prerelease) || HasVersionTag(PackageTag.preview) || IsVerified; }
182 public bool IsInDevelopment {
get {
return Origin == PackageSource.Embedded; } }
183 public bool IsLocal {
get {
return Origin == PackageSource.Local; } }
184 public bool IsBuiltIn {
get {
return Origin == PackageSource.BuiltIn; } }
186 public string VersionWithoutTag {
get {
return Version.VersionOnly(); } }
188 public bool IsVersionLocked
190 get {
return Origin == PackageSource.Embedded || Origin == PackageSource.Git || Origin == PackageSource.BuiltIn; }
193 public bool CanBeRemoved
195 get {
return Origin == PackageSource.Registry || Origin == PackageSource.BuiltIn || Origin == PackageSource.Local; }
A semantic version implementation. Conforms to v2.0.0 of http://semver.org/
int Major
Gets the major version.
string Prerelease
Gets the pre-release version.