import java.lang { System { lineSeparator } } "Represents the operating system on which the current process is running." see (`value process`, `value runtime`, `value language`, `value system`) tagged("Environment") shared native object operatingSystem { "Returns the name of the operating system this process is running on: `linux`, `mac`, `unix`, `windows` or `other`." shared native String name { String? os = process.propertyValue("os.name")?.lowercased; if (exists os) { if (os.contains("win")) { return "windows"; } else if (os.contains("mac")) { return "mac"; } else if (os.contains("linux")) { return "linux"; } else if (os.contains("nix") || os.contains("freebsd") || os.contains("openbsd") || os.contains("netbsd") || os.contains("sunos")) { return "unix"; } } return "other"; } "Returns the version of the operating system this process is running on or `Unknown` if it was not possible to retrieve that information. The result is completely dependent on the underlying system." shared native String version => "Unknown"; "The line ending character sequence on this platform." shared native String newline; "The character used on this platform to separate the folder/file elements of a path." shared native String fileSeparator { assert (exists result = process.propertyValue("file.separator")); return result; } "The character used on this platform to use as a separator between several paths in a list of paths." shared native String pathSeparator { assert (exists result = process.propertyValue("path.separator")); return result; } string => "operating system [``name`` / ``version``]"; } shared native("jvm") object operatingSystem { shared native("jvm") String version => process.propertyValue("os.version") else "Unknown"; shared native("jvm") String newline => lineSeparator(); } shared native("js") object operatingSystem { shared native("js") String newline { assert (exists result = process.propertyValue("line.separator")); return result; } }