summaryrefslogtreecommitdiffstats
path: root/vendor/os_info/src/architecture.rs
blob: d6de08b2c967e2478ebc66bbe990eeeacb68e6fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
use std::process::Command;

use log::error;

pub fn get() -> Option<String> {
    Command::new("uname")
        .arg("-m")
        .output()
        .map_err(|e| {
            error!("Cannot invoke 'uname` to get architecture type: {:?}", e);
        })
        .ok()
        .and_then(|out| {
            if out.status.success() {
                Some(String::from_utf8_lossy(&out.stdout).trim_end().to_owned())
            } else {
                log::error!("'uname' invocation error: {:?}", out);
                None
            }
        })
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn uname_nonempty() {
        let val = get().expect("uname failed");
        assert!(!val.is_empty());
    }
}