added logging and cleaned code up
This commit is contained in:
parent
e4ff4eca09
commit
5681f4a285
3 changed files with 152 additions and 60 deletions
|
@ -8,7 +8,9 @@ edition = "2021"
|
|||
[dependencies]
|
||||
chrono = "0.4.26"
|
||||
clap = { version = "4.4.0", features = ["derive"] }
|
||||
log = "0.4.20"
|
||||
reqwest = { version = "0.11.18", features = ["blocking", "json"] }
|
||||
serde = { version = "1.0.184", features = ["serde_derive"] }
|
||||
serde_json = "1.0.105"
|
||||
simplelog = "0.12.1"
|
||||
toml = "0.7.6"
|
||||
|
|
|
@ -1,103 +1,114 @@
|
|||
use serde::{Deserialize, Serialize};
|
||||
use reqwest::blocking::Client;
|
||||
|
||||
use toml;
|
||||
use clap::Parser;
|
||||
|
||||
use log::{debug, error, warn};
|
||||
use reqwest::blocking::Client;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::process::Command;
|
||||
|
||||
|
||||
// TODO: logging
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
|
||||
let args = CliArgs::parse();
|
||||
|
||||
println!("Opening Config file: {}", args.config_file);
|
||||
println!("File exists: {}", std::fs::metadata(args.config_file.clone()).is_ok());
|
||||
if args.debug {
|
||||
let _ = simplelog::SimpleLogger::init(
|
||||
simplelog::LevelFilter::Debug,
|
||||
simplelog::Config::default(),
|
||||
);
|
||||
} else {
|
||||
let _ = simplelog::SimpleLogger::init(
|
||||
simplelog::LevelFilter::Info,
|
||||
simplelog::Config::default(),
|
||||
);
|
||||
}
|
||||
|
||||
debug!("Opening Config file: {}", args.config_file);
|
||||
debug!(
|
||||
"Config file exists: {}",
|
||||
std::fs::metadata(args.config_file.clone()).is_ok()
|
||||
);
|
||||
|
||||
let file_contents = match std::fs::read_to_string(args.config_file) {
|
||||
Ok(val) => val,
|
||||
Err(e) => {
|
||||
println!("Could not read file: {}", e.to_string());
|
||||
return Ok(());
|
||||
error!("Could not read config file: {}", e.to_string());
|
||||
panic!("{}", e);
|
||||
}
|
||||
};
|
||||
|
||||
let cfg: Config = match toml::from_str(file_contents.as_str()) {
|
||||
Ok(val) => val,
|
||||
Err(e) => {
|
||||
println!("Could not parse file: {}", e.to_string());
|
||||
return Ok(());
|
||||
error!("Could not parse config file: {}", e.to_string());
|
||||
panic!("{}", e);
|
||||
}
|
||||
};
|
||||
|
||||
let mut body_content: String = format!("*Last Updated:* {} \n", chrono::Local::now().format("%D - %H:%M:%S"));
|
||||
|
||||
let mut drives: Vec<String> = vec![];
|
||||
|
||||
{
|
||||
let rust_drives = match std::fs::read_dir("/dev/") {
|
||||
Ok(val) => val,
|
||||
Err(e) => {
|
||||
println!("Error opening /dev/: {}", e.to_string());
|
||||
return Ok(());
|
||||
}
|
||||
};
|
||||
let mut body_content: String = format!(
|
||||
"*Last Updated:* {} \n",
|
||||
chrono::Local::now().format("%D - %H:%M:%S")
|
||||
);
|
||||
|
||||
for path in rust_drives {
|
||||
match path {
|
||||
Ok(ref val) => {
|
||||
let tmp = val.path().to_string_lossy().to_string();
|
||||
if tmp.starts_with("/dev/sd") {
|
||||
if tmp.len() == 8 {
|
||||
drives.push(tmp);
|
||||
}
|
||||
}
|
||||
},
|
||||
_ => {}
|
||||
let mut drives: Vec<String> = vec![];
|
||||
|
||||
match std::fs::read_dir("/dev/") {
|
||||
Ok(paths) => {
|
||||
for path in paths.flatten() {
|
||||
let tmp = path.path().to_string_lossy().to_string();
|
||||
if tmp.starts_with("/dev/sd") && tmp.len() == 8 {
|
||||
drives.push(tmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
error!("Error opening /dev/: {}", e.to_string());
|
||||
panic!("{}", e);
|
||||
}
|
||||
};
|
||||
|
||||
{
|
||||
let mut drive_temps: Vec<String> = vec![];
|
||||
|
||||
for drive in drives {
|
||||
let output = match Command::new(args.hddtemp_executable.clone()).arg(drive.clone()).output() {
|
||||
Ok(val) => val,
|
||||
let output = match Command::new(args.hddtemp_executable.clone())
|
||||
.arg(drive.clone())
|
||||
.output()
|
||||
{
|
||||
Ok(val) => String::from_utf8_lossy(&val.stdout).into_owned(),
|
||||
Err(e) => {
|
||||
println!("Error running hddtemp: {}", e.to_string());
|
||||
println!("Drive was: '{}'", drive);
|
||||
return Ok(());
|
||||
warn!("Error running hddtemp: {}", e.to_string());
|
||||
warn!("Drive was: '{}'", drive);
|
||||
"".to_string()
|
||||
}
|
||||
};
|
||||
|
||||
let tmp = String::from_utf8_lossy(&output.stdout).into_owned();
|
||||
|
||||
if !tmp.contains("sensor") {
|
||||
drive_temps.push(tmp.replace("\n", ""));
|
||||
if !output.contains("sensor") {
|
||||
drive_temps.push(output.replace('\n', "?"));
|
||||
} else {
|
||||
drive_temps.push(tmp[0..9].to_string() + " No Sensor");
|
||||
drive_temps.push(output[0..9].to_string() + " No Sensor");
|
||||
}
|
||||
}
|
||||
body_content.push_str("## Hard Drive Temps\n");
|
||||
body_content.push_str(drive_temps.join("\n").as_str());
|
||||
}
|
||||
|
||||
|
||||
Client::new()
|
||||
.put(format!("https://{}/index.php/apps/notes/api/v1/notes/{}", cfg.server_url.clone(), cfg.note_id.clone()))
|
||||
.put(format!(
|
||||
"https://{}/index.php/apps/notes/api/v1/notes/{}",
|
||||
cfg.server_url.clone(),
|
||||
cfg.note_id.clone()
|
||||
))
|
||||
.header("Accept", "application/json")
|
||||
.header("Content-Type", "application/json")
|
||||
.basic_auth(cfg.user.clone(), Some(cfg.pswd.clone()))
|
||||
.body(serde_json::to_string(&NoteUpdate {content: body_content}).unwrap())
|
||||
.send()?;
|
||||
.body(
|
||||
serde_json::to_string(&NoteUpdate {
|
||||
content: body_content,
|
||||
})
|
||||
.unwrap(),
|
||||
)
|
||||
.send()?;
|
||||
|
||||
Ok(())
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
struct Note {
|
||||
id: usize,
|
||||
|
@ -107,7 +118,7 @@ struct Note {
|
|||
title: String,
|
||||
category: String,
|
||||
content: String,
|
||||
favorite: bool
|
||||
favorite: bool,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
|
@ -120,13 +131,13 @@ struct Config {
|
|||
user: String,
|
||||
pswd: String,
|
||||
note_id: String,
|
||||
server_url: String
|
||||
server_url: String,
|
||||
}
|
||||
|
||||
impl Default for Config {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
user: "".to_string(),
|
||||
user: "".to_string(),
|
||||
pswd: "".to_string(),
|
||||
note_id: "".to_string(),
|
||||
server_url: "".to_string(),
|
||||
|
@ -137,10 +148,13 @@ impl Default for Config {
|
|||
#[derive(Parser, Debug)]
|
||||
#[command(author, version, about, long_about=None)]
|
||||
struct CliArgs {
|
||||
/// Path to config .toml file
|
||||
/// Path to config .toml file
|
||||
#[arg(short, long)]
|
||||
config_file: String,
|
||||
|
||||
#[arg(short, long)]
|
||||
hddtemp_executable: String,
|
||||
|
||||
#[arg(short, long)]
|
||||
debug: bool,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue