diff options
Diffstat (limited to 'Sparkles/InstallationInfo.cs')
-rw-r--r-- | Sparkles/InstallationInfo.cs | 63 |
1 files changed, 39 insertions, 24 deletions
diff --git a/Sparkles/InstallationInfo.cs b/Sparkles/InstallationInfo.cs index 274eddc..c3b47bc 100644 --- a/Sparkles/InstallationInfo.cs +++ b/Sparkles/InstallationInfo.cs @@ -22,7 +22,7 @@ namespace Sparkles { public enum OS { Unknown, - Mac, + macOS, Windows, Ubuntu, GNOME @@ -43,13 +43,13 @@ namespace Sparkles { return operating_system; } - var uname = new Command ("uname", "-a", false); + var uname = new Command ("uname", "-a", write_output: false); string output = uname.StartAndReadStandardOutput (); // Environment.OSVersion.Platform.PlatformID.MacOSX is broken in Mono // for historical reasons, so check manually if (output.StartsWith ("Darwin", StringComparison.InvariantCulture)) { - operating_system = OS.Mac; + operating_system = OS.macOS; } else if (output.Contains ("Ubuntu")) { operating_system = OS.Ubuntu; @@ -63,29 +63,37 @@ namespace Sparkles { } - public static string MacOSVersion () - { - var uname = new Command ("sw_vers", "-productVersion", false); - string output = uname.StartAndReadStandardOutput (); - string version = output; - - // Parse the version number between the periods (e.g. "10.12.1" -> 12) - output = output.Substring (output.IndexOf (".") + 1); - output = output.Substring (0, output.LastIndexOf (".")); - - string release = "Unreleased Version"; + public static string OperatingSystemVersion { + get { + if (OperatingSystem == OS.macOS) { + var uname = new Command ("sw_vers", "-productVersion", write_output: false); + string output = uname.StartAndReadStandardOutput (); + string version = output; + + // Parse the version number between the periods (e.g. "10.12.1" -> 12) + output = output.Substring (output.IndexOf (".") + 1); + if (output.LastIndexOf (".") != -1) { + output = output.Substring (0, output.LastIndexOf (".")); + } + string release = "Unreleased Version"; + + switch (int.Parse (output)) { + case 7: release = "Lion"; break; + case 8: release = "Mountain Lion"; break; + case 9: release = "Mavericks"; break; + case 10: release = "Yosemite"; break; + case 11: release = "El Capitan"; break; + case 12: release = "Sierra"; break; + case 13: release = "High Sierra"; break; + case 14: release = "Mojave"; break; + } + + return string.Format ("{0} ({1})", version, release); + } - switch (int.Parse (output)) { - case 7: release = "Lion"; break; - case 8: release = "Mountain Lion"; break; - case 9: release = "Mavericks"; break; - case 10: release = "Yosemite"; break; - case 11: release = "El Capitan"; break; - case 12: release = "Sierra"; break; - case 13: release = "High Sierra"; break; + string os_version = Environment.OSVersion.ToString (); + return string.Format ("({0})", os_version.Replace ("Unix", "Linux")); } - - return string.Format ("macOS {0} ({1})", version, release); } @@ -95,5 +103,12 @@ namespace Sparkles { return version.Substring (0, version.Length - 2); } } + + + public static bool IsFlatpak { + get { + return Directory.StartsWith ("/app", StringComparison.InvariantCulture); + } + } } } |