public Boolean ServerModCheck(int major, int minor, int fix) { if (this.ServerModVersion == null) { return(false); } String[] parts = ServerModVersion.Split('.'); int verMajor = 0; int verMinor = 0; int verFix = 0; if (parts.Length == 3) { Int32.TryParse(parts[0], out verMajor); Int32.TryParse(parts[1], out verMinor); Int32.TryParse(parts[2], out verFix); } else if (parts.Length == 2) { Int32.TryParse(parts[0], out verMajor); Int32.TryParse(parts[1], out verMinor); } else { return(false); } if (major == 0 && minor == 0 && verFix == 0) { return(false); } return((verMajor > major) || (verMajor >= major && verMinor > minor) || (verMajor >= major && verMinor >= minor && verFix >= fix)); }
public static void checkForUpdates(bool sendMessageIfNone) { G.Sys.GameManager_.StartCoroutine(getUpdates(releases => { try { var updates = new List <Dictionary <string, object> >(); foreach (var release in releases) { if (!(bool)release["draft"]) { string releaseTag = (string)release["tag_name"]; var releaseTagMatch = Regex.Match(releaseTag, updateCheckRemoteRegex); if (releaseTagMatch.Success) { var version = new ServerModVersion(releaseTagMatch.Groups[1].Value); if (version <= Entry.PluginVersion) { break; } updates.Add(release); } } } /// if (updates.Count == 0) { if (sendMessageIfNone) { MessageUtilities.sendMessage("No updates to ServerMod available."); } } else { string printTxt = ""; printTxt += ("[A0D0A0]There are updates for ServerMod available.[-]\n"); printTxt += ("[00D000]You are on " + Entry.PluginVersion + "[-]\n"); printTxt += ("[A0D0A0]Newer versions:[-]\n"); int preCount = 0; int count = 0; foreach (var release in updates) { string releaseTag = (string)release["tag_name"]; var releaseTagMatch = Regex.Match(releaseTag, updateCheckRemoteRegex); var version = new ServerModVersion(releaseTagMatch.Groups[1].Value); if (count == 3) { printTxt += ($" [A0D0A0]and {updates.Count - count} more...[-]\n"); break; } bool prerelease = (bool)release["prerelease"]; if (prerelease && !showPrereleaseStatic) { preCount++; continue; } string prereleaseText = (prerelease ? " [707070](pre-release)[-]" : ""); if (count == 0) { if (preCount > 0) { printTxt += ($" [508050]({preCount} pre-releases)[-]\n"); } printTxt += (" [00F000]" + version + "[-]" + prereleaseText + "\n"); string body = (string)release["body"]; var outerMatch = Regex.Match(body, changesRegexOuter); if (outerMatch.Success) { var innerMatches = Regex.Matches(outerMatch.Groups[1].Value, changesRegexInner); var releaseNoteCount = 0; foreach (Match innerMatch in innerMatches) { if (releaseNoteCount == 4) { if (innerMatches.Count > 4) { printTxt += ($" and {innerMatches.Count - 4} more.\n"); } break; } printTxt += (" • " + innerMatch.Groups[1].Value + "\n"); releaseNoteCount++; } } } else { printTxt += (" [A0D0A0]" + version + "[-]" + prereleaseText + "\n"); } count++; } if (preCount > 0 && count == 0) { MessageUtilities.sendMessage($"[508050]ServerMod: {preCount} pre-release updates available[-]"); } else { MessageUtilities.sendMessage(printTxt.Substring(0, printTxt.Length - 1)); } } } catch (Exception e) { Console.WriteLine(e); } })); }
public ReleaseNotice(string version, string notes) { this.version = new ServerModVersion(version); this.notes = notes; }