os_info/
architecture.rs

1use std::process::Command;
2
3use log::error;
4
5pub fn get() -> Option<String> {
6    Command::new("uname")
7        .arg("-m")
8        .output()
9        .map_err(|e| {
10            error!("Cannot invoke 'uname` to get architecture type: {:?}", e);
11        })
12        .ok()
13        .and_then(|out| {
14            if out.status.success() {
15                Some(String::from_utf8_lossy(&out.stdout).trim_end().to_owned())
16            } else {
17                log::error!("'uname' invocation error: {:?}", out);
18                None
19            }
20        })
21}
22
23#[cfg(test)]
24mod tests {
25    use super::*;
26
27    #[test]
28    fn uname_nonempty() {
29        let val = get().expect("architecture::get() failed");
30        assert!(!val.is_empty());
31    }
32}