public AppReleaseInfo(UserModel m, AppRelease r) { Id = r.Id; AppVersion = r.AppVersion; AddinRootVersion = r.AddinRootVersion; LastUpdateTime = r.LastUpdateTime; if (r.CompatibleAppReleaseId != null) { var cr = m.GetAppRelease (r.CompatibleAppReleaseId.Value); CompatibleAppVersion = cr.AppVersion; } ZipUrl = "/Project/AppReleasePackage/" + Id; }
static void AppendCompatibleRepo(UserModel m, string file) { string appVersion = Path.GetFileName (Path.GetDirectoryName (file)); AppRelease rel = m.GetAppReleaseByVersion (appVersion); if (rel == null || !rel.CompatibleAppReleaseId.HasValue) return; rel = m.GetAppRelease (rel.CompatibleAppReleaseId.Value); if (rel == null) return; XmlDocument repDoc = new XmlDocument (); repDoc.Load (file); XmlElement repoElem = repDoc.CreateElement ("Repository"); repDoc.DocumentElement.AppendChild (repoElem); XmlElement elem = repDoc.CreateElement ("Url"); elem.InnerText = "../" + rel.AppVersion + "/main.mrep"; repoElem.AppendChild (elem); repDoc.Save (file); }
static string[] GetCompatibleAppVersions(UserModel m, List<AppRelease> allAppReleases, string appVersion) { string[] res; if (!cachedCompatibleVersions.TryGetValue (appVersion, out res)) { var appRel = m.GetAppReleaseByVersion (appVersion); List<string> versions = new List<string> (); versions.Add (appVersion); if (appRel.CompatibleAppReleaseId.HasValue) { var compatRel = m.GetAppRelease (appRel.CompatibleAppReleaseId.Value); if (compatRel != null) { foreach (var app in allAppReleases) { if (Mono.Addins.Addin.CompareVersions (app.AppVersion, appRel.AppVersion) > 0 && Mono.Addins.Addin.CompareVersions (compatRel.AppVersion, app.AppVersion) >= 0) versions.Add (app.AppVersion); } } } res = cachedCompatibleVersions [appVersion] = versions.ToArray (); } return res; }