whatsys/
lib.rs

1//! What kernel version is running?
2//!
3//! # Example
4//!
5//! ```
6//! let kernel = whatsys::kernel_version(); // E.g. Some("20.3.0")
7//! ```
8//!
9//! # Supported operating systems
10//!
11//! We support the following operating systems:
12//!
13//! * Windows
14//! * macOS
15//! * Linux
16//! * Android
17//!
18//! # License
19//!
20//! MIT. Copyright (c) 2021-2022 Jan-Erik Rediger
21//!
22//! Based on:
23//!
24//! * [sys-info](https://crates.io/crates/sys-info), [Repository](https://github.com/FillZpp/sys-info-rs), [MIT LICENSE][sys-info-mit]
25//! * [sysinfo](https://crates.io/crates/sysinfo), [Repository](https://github.com/GuillaumeGomez/sysinfo), [MIT LICENSE][sysinfo-mit]
26//!
27//! [sys-info-mit]: https://github.com/FillZpp/sys-info-rs/blob/master/LICENSE
28//! [sysinfo-mit]: https://github.com/GuillaumeGomez/sysinfo/blob/master/LICENSE
29
30#![deny(missing_docs)]
31#![deny(rustdoc::broken_intra_doc_links)]
32
33cfg_if::cfg_if! {
34    if #[cfg(target_os = "macos")] {
35        mod apple;
36        use apple as system;
37
38    } else if #[cfg(any(target_os = "linux", target_os = "android"))] {
39        mod linux;
40        use linux as system;
41    } else if #[cfg(windows)] {
42        mod windows;
43        use windows as system;
44    } else {
45        mod fallback;
46        use fallback as system;
47    }
48}
49
50pub use system::kernel_version;
51
52#[cfg(target_os = "windows")]
53pub use system::windows_build_number;
54
55#[cfg(test)]
56mod test {
57    use super::*;
58
59    #[test]
60    fn gets_a_version() {
61        assert!(kernel_version().is_some());
62    }
63
64    #[cfg(target_os = "windows")]
65    #[test]
66    fn test_windows_build_number() {
67        let build_number = windows::windows_build_number();
68        assert!(build_number.is_some());
69    }
70}