system_data/
cpu_info.rs

1use std::{process::Command, error, result};
2use crate::sanitize_data::{sanitize, GetInfoError};
3
4pub fn name() -> Result<String, GetInfoError>  {
5  let output = Command::new("wmic")
6  .arg("cpu")
7  .arg("get")
8  .arg("name")
9  .output()
10  .expect("failed to execute process");
11  
12  sanitize(output)
13}
14
15pub fn cores() -> Result<String, GetInfoError>  {
16  let output = Command::new("wmic")
17  .arg("cpu")
18  .arg("get")
19  .arg("numberofcores")
20  .output()
21  .expect("failed to execute process");
22  
23  sanitize(output)
24}
25
26pub fn processor_id() -> Result<String, GetInfoError>  {
27  let output = Command::new("wmic")
28  .arg("cpu")
29  .arg("get")
30  .arg("processorid")
31  .output()
32  .expect("failed to execute process");
33  
34  sanitize(output)
35}
36
37
38#[derive(Debug)]
39pub struct CpuInfo {
40  pub name: String,
41  pub cores: String,
42  pub processor_id: String,
43}
44
45pub fn all() -> Result<CpuInfo, GetInfoError>  {
46  let result = name();
47  if let Err(error) = result {
48    return Err(error);
49  }
50  let name = result.unwrap();
51
52  let result = cores();
53  if let Err(error) = result {
54    return Err(error);
55  }
56  let cores = result.unwrap();
57
58  let result = processor_id();
59  if let Err(error) = result {
60    return Err(error);
61  }
62  let processor_id = result.unwrap();
63
64  let data = CpuInfo {
65    name,
66    cores,
67    processor_id
68  };
69
70  Ok(data)
71}