use anyhow::{anyhow, Result};
use std::{process::Command, result::Result::Ok};
pub fn temperature() -> Result<f64> {
let output = Command::new("nvidia-smi")
.arg("--query-gpu=temperature.gpu")
.arg("--format=csv,noheader")
.output()?;
if output.status.success() {
let string_temp = String::from_utf8_lossy(&output.stdout).to_string();
let clean_temp = string_temp.trim();
match &clean_temp.parse::<f64>() {
Ok(temp) => Ok(*temp),
Err(err) => Err(anyhow!(err.to_string())),
}
} else {
Err(anyhow!(String::from_utf8_lossy(&output.stderr).to_string()))
}
}