system_data 0.1.0

A package for collect information about system's OS, CPU and Disk_Drive
Documentation
use std::{process::Command, error};
use crate::sanitize_data::{sanitize, GetInfoError};

pub fn name() -> Result<String, GetInfoError> {
  let output = Command::new("wmic")
  .arg("diskdrive")
  .arg("get")
  .arg("name")
  .output()
  .expect("failed to execute process");

  sanitize(output)
}

pub fn model() -> Result<String,GetInfoError>  {
  let output = Command::new("wmic")
  .arg("diskdrive")
  .arg("get")
  .arg("model")
  .output()
  .expect("failed to execute process");

  sanitize(output)
}

pub fn serial_number() -> Result<String, GetInfoError> {
  let output = Command::new("wmic")
  .arg("diskdrive")
  .arg("get")
  .arg("serialnumber")
  .output()
  .expect("failed to execute process");

  sanitize(output)
}

pub fn size() -> Result<String, GetInfoError> {
  let output = Command::new("wmic")
  .arg("diskdrive")
  .arg("get")
  .arg("size")
  .output()
  .expect("failed to execute process");

  sanitize(output)
}

#[derive(Debug)]
pub struct DiskInfo {
  pub name: String,
  pub model: String,
  pub serial_number: String,
  pub size: String
}

pub fn all() -> Result<DiskInfo, GetInfoError>  {
  let result = name();
  if let Err(error) = result {
    return Err(error);
  }
  let name = result.unwrap();

  let result = model();
  if let Err(error) = result {
    return Err(error);
  }
  let model = result.unwrap();

  let result = serial_number();
  if let Err(error) = result {
    return Err(error);
  }
  let serial_number = result.unwrap();

  let result = size();
  if let Err(error) = result {
    return Err(error);
  }
  let size = result.unwrap();

  let data = DiskInfo {
    name,
    model,
    serial_number,
    size
  };

  Ok(data)
}