public bool CheckVersion(bool forceUpdate = false) { try { if (!GUIMode) { Console.WriteLine("Checking for IRSE updates..."); } if (m_useDevRelease && m_developmentRelease == null) { Console.WriteLine("No Development Updates Exist"); return(false); } if (!m_useDevRelease && m_currentRelease == null) { Console.WriteLine("No Updates Exist"); return(false); } string devText = (m_useDevRelease ? "Development Version" : ""); var checkedVersion = new Version(m_currentRelease?.TagName); if (m_useDevRelease) { checkedVersion = new Version(m_developmentRelease?.TagName); } NewVersionNumber = checkedVersion; Release localRelease = m_currentRelease; if (m_useDevRelease) { localRelease = m_developmentRelease; } HasUpdate = (checkedVersion > Program.Version || forceUpdate); if (GUIMode) { OnUpdateChecked?.Invoke(localRelease); return(true); } if (HasUpdate) { Console.WriteLine($"IRSE: A new {devText} version of IRSE has been detected.\r\n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine($"Name: { localRelease.Name }"); Console.WriteLine($"Version: { localRelease.TagName }"); if (localRelease.Assets.Count > 0) { Console.WriteLine($"Total Downloads: { localRelease.Assets.First().DownloadCount }"); } if (localRelease.Assets.Count > 0) { Console.WriteLine($"Published Date: { localRelease.Assets.First().CreatedAt.ToLocalTime() }\r\n"); } Console.ResetColor(); if (!EnableAutoUpdates) { Console.WriteLine("Would you like to see the changes? (y/n)"); if (Console.ReadKey().Key == ConsoleKey.Y) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\r\nChanges:\r\n" + localRelease.Body); Console.ResetColor(); } if (m_useDevRelease) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("WARNING: Be absolutely sure that your server is backed up!"); Console.WriteLine("WARNING: Development Versions CAN break your server!\r\n"); Console.WriteLine($"Press Y to continue, or N to quit. (y/n)"); Console.ResetColor(); if (Console.ReadKey().Key == ConsoleKey.Y) { Console.WriteLine("\r\nWould you like to update with the development version now? (y/n)"); if (Console.ReadKey().Key == ConsoleKey.Y) { Console.WriteLine("\r\n"); DownloadLatestRelease(true); return(true); } } else if (Console.ReadKey().Key == ConsoleKey.N) { Console.WriteLine($"Canceling this {devText} update for now"); return(false); } } else { Console.WriteLine("Would you like to update now? (y/n)"); if (Console.ReadKey().Key == ConsoleKey.Y) { Console.WriteLine("\r\n"); DownloadLatestRelease(); return(true); } } Console.WriteLine("IRSE: Skipping update.. We'll ask next time you restart IRSE!"); } else { Console.WriteLine("IRSE: Auto updating"); DownloadLatestRelease(m_useDevRelease); } return(true); } else { Console.WriteLine("IRSE: IRSE is running the latest version!"); } } catch (Exception ex) { Console.WriteLine("IRSE: Update Failed (CheckVersion)" + ex.ToString()); } return(false); }
public bool CheckVersion(bool forceUpdate = false) { try { string devText = (m_useDevRelease ? "Development Version" : ""); var checkedVersion = new Version(m_currentRelease.TagName); if (m_useDevRelease) { checkedVersion = new Version(m_developmentRelease.TagName); } NewVersionNumber = checkedVersion; Release localRelease = m_currentRelease; if (m_useDevRelease) { localRelease = m_developmentRelease; } if (GUIMode) { HasUpdate = (checkedVersion > HES.Version || forceUpdate); OnUpdateChecked?.Invoke(localRelease); return(true); } if (checkedVersion > HES.Version || forceUpdate) { Console.WriteLine($"HellionExtendedServer: A new {devText} version of Hellion Extended Server has been detected.\r\n"); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine($"Name: { localRelease.Assets.First().Name }"); Console.WriteLine($"Version: { localRelease.TagName }"); Console.WriteLine($"Total Downloads: { localRelease.Assets.First().DownloadCount }"); Console.WriteLine($"Published Date: { localRelease.Assets.First().CreatedAt }\r\n"); Console.ResetColor(); if (!EnableAutoUpdates) { Console.WriteLine("Would you like to see the changes? (y/n)"); if (Console.ReadKey().Key == ConsoleKey.Y) { Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine("\r\nChanges:\r\n" + localRelease.Body); Console.ResetColor(); } if (m_useDevRelease) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("WARNING: Be absolutely sure that your server is backed up!"); Console.WriteLine("WARNING: Development Versions CAN break your server!\r\n"); Console.WriteLine($"Do you agree to use this {devText}? (y/n)"); Console.ResetColor(); if (Console.ReadKey().Key == ConsoleKey.Y) { Console.WriteLine("\r\nWould you like to update with the development version now? (y/n)"); if (Console.ReadKey().Key == ConsoleKey.Y) { Console.WriteLine("\r\n"); DownloadLatestRelease(true); return(true); } } else if (Console.ReadKey().Key == ConsoleKey.N) { Console.WriteLine($"Canceling this {devText} update for now"); return(false); } } else { Console.WriteLine("Would you like to update now? (y/n)"); if (Console.ReadKey().Key == ConsoleKey.Y) { Console.WriteLine("\r\n"); DownloadLatestRelease(); return(true); } } Console.WriteLine("HellionExtendedServer: Skipping update.. We'll ask next time you restart HES!"); } else { Console.WriteLine("HellionExtendedServer: Auto updating"); DownloadLatestRelease(m_useDevRelease); } return(true); } else { Console.WriteLine("HellionExtendedServer: HES is running the latest version!"); } } catch (Exception ex) { Console.WriteLine("HellionExtendedServer: Update Failed (CheckVersion)" + ex.ToString()); } return(false); }