From 10654d425f0e66f575860855a4020567bb62e7b5 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Wed, 19 Jun 2019 17:09:22 +1200 Subject: [PATCH] Fix Windows build issue --- src/commands/sysinfo.rs | 125 +++++++++++++++++++++++++++++++--------- 1 file changed, 97 insertions(+), 28 deletions(-) diff --git a/src/commands/sysinfo.rs b/src/commands/sysinfo.rs index 9e1191455..738bdab64 100644 --- a/src/commands/sysinfo.rs +++ b/src/commands/sysinfo.rs @@ -1,7 +1,7 @@ use crate::errors::ShellError; -use crate::object::{Value, Primitive}; -use crate::object::Dictionary; use crate::object::base::OF64; +use crate::object::Dictionary; +use crate::object::{Primitive, Value}; use crate::prelude::*; use sys_info::*; @@ -10,63 +10,132 @@ pub fn sysinfo(_args: CommandArgs) -> Result { if let (Ok(name), Ok(version)) = (os_type(), os_release()) { let mut os_idx = indexmap::IndexMap::new(); - os_idx.insert("name".to_string(), Value::Primitive(Primitive::String(name))); - os_idx.insert("version".to_string(), Value::Primitive(Primitive::String(version))); + os_idx.insert( + "name".to_string(), + Value::Primitive(Primitive::String(name)), + ); + os_idx.insert( + "version".to_string(), + Value::Primitive(Primitive::String(version)), + ); idx.insert("os".to_string(), Value::Object(Dictionary::from(os_idx))); } if let (Ok(num_cpu), Ok(cpu_speed)) = (cpu_num(), cpu_speed()) { let mut cpu_idx = indexmap::IndexMap::new(); - cpu_idx.insert("num".to_string(), Value::Primitive(Primitive::Int(num_cpu as i64))); - cpu_idx.insert("speed".to_string(), Value::Primitive(Primitive::Int(cpu_speed as i64))); + cpu_idx.insert( + "num".to_string(), + Value::Primitive(Primitive::Int(num_cpu as i64)), + ); + cpu_idx.insert( + "speed".to_string(), + Value::Primitive(Primitive::Int(cpu_speed as i64)), + ); idx.insert("cpu".to_string(), Value::Object(Dictionary::from(cpu_idx))); } if let Ok(x) = loadavg() { let mut load_idx = indexmap::IndexMap::new(); - load_idx.insert("1min".to_string(), Value::Primitive(Primitive::Float(OF64::from(x.one)))); - load_idx.insert("5min".to_string(), Value::Primitive(Primitive::Float(OF64::from(x.five)))); - load_idx.insert("15min".to_string(), Value::Primitive(Primitive::Float(OF64::from(x.fifteen)))); + load_idx.insert( + "1min".to_string(), + Value::Primitive(Primitive::Float(OF64::from(x.one))), + ); + load_idx.insert( + "5min".to_string(), + Value::Primitive(Primitive::Float(OF64::from(x.five))), + ); + load_idx.insert( + "15min".to_string(), + Value::Primitive(Primitive::Float(OF64::from(x.fifteen))), + ); - idx.insert("load avg".to_string(), Value::Object(Dictionary::from(load_idx))); + idx.insert( + "load avg".to_string(), + Value::Object(Dictionary::from(load_idx)), + ); } if let Ok(x) = mem_info() { let mut mem_idx = indexmap::IndexMap::new(); - mem_idx.insert("total".to_string(), Value::Primitive(Primitive::Bytes(x.total as u128 * 1024))); - mem_idx.insert("free".to_string(), Value::Primitive(Primitive::Bytes(x.free as u128 * 1024))); - mem_idx.insert("avail".to_string(), Value::Primitive(Primitive::Bytes(x.avail as u128 * 1024))); - mem_idx.insert("buffers".to_string(), Value::Primitive(Primitive::Bytes(x.buffers as u128 * 1024))); - mem_idx.insert("cached".to_string(), Value::Primitive(Primitive::Bytes(x.cached as u128 * 1024))); - mem_idx.insert("swap total".to_string(), Value::Primitive(Primitive::Bytes(x.swap_total as u128 * 1024))); - mem_idx.insert("swap free".to_string(), Value::Primitive(Primitive::Bytes(x.swap_free as u128 * 1024))); + mem_idx.insert( + "total".to_string(), + Value::Primitive(Primitive::Bytes(x.total as u128 * 1024)), + ); + mem_idx.insert( + "free".to_string(), + Value::Primitive(Primitive::Bytes(x.free as u128 * 1024)), + ); + mem_idx.insert( + "avail".to_string(), + Value::Primitive(Primitive::Bytes(x.avail as u128 * 1024)), + ); + mem_idx.insert( + "buffers".to_string(), + Value::Primitive(Primitive::Bytes(x.buffers as u128 * 1024)), + ); + mem_idx.insert( + "cached".to_string(), + Value::Primitive(Primitive::Bytes(x.cached as u128 * 1024)), + ); + mem_idx.insert( + "swap total".to_string(), + Value::Primitive(Primitive::Bytes(x.swap_total as u128 * 1024)), + ); + mem_idx.insert( + "swap free".to_string(), + Value::Primitive(Primitive::Bytes(x.swap_free as u128 * 1024)), + ); idx.insert("mem".to_string(), Value::Object(Dictionary::from(mem_idx))); } if let Ok(x) = disk_info() { let mut disk_idx = indexmap::IndexMap::new(); - disk_idx.insert("total".to_string(), Value::Primitive(Primitive::Bytes(x.total as u128 * 1024))); - disk_idx.insert("free".to_string(), Value::Primitive(Primitive::Bytes(x.free as u128 * 1024))); + disk_idx.insert( + "total".to_string(), + Value::Primitive(Primitive::Bytes(x.total as u128 * 1024)), + ); + disk_idx.insert( + "free".to_string(), + Value::Primitive(Primitive::Bytes(x.free as u128 * 1024)), + ); } if let Ok(x) = hostname() { - idx.insert("hostname".to_string(), Value::Primitive(Primitive::String(x))); - } + idx.insert( + "hostname".to_string(), + Value::Primitive(Primitive::String(x)), + ); + } - if let Ok(x) = boottime() { - let mut boottime_idx = indexmap::IndexMap::new(); - boottime_idx.insert("days".to_string(), Value::Primitive(Primitive::Int(x.tv_sec / (24 * 3600)))); - boottime_idx.insert("hours".to_string(), Value::Primitive(Primitive::Int((x.tv_sec / 3600) % 24))); - boottime_idx.insert("mins".to_string(), Value::Primitive(Primitive::Int((x.tv_sec / 60) % 60))); + #[cfg(not(windows))] + { + if let Ok(x) = boottime() { + let mut boottime_idx = indexmap::IndexMap::new(); + boottime_idx.insert( + "days".to_string(), + Value::Primitive(Primitive::Int(x.tv_sec / (24 * 3600))), + ); + boottime_idx.insert( + "hours".to_string(), + Value::Primitive(Primitive::Int((x.tv_sec / 3600) % 24)), + ); + boottime_idx.insert( + "mins".to_string(), + Value::Primitive(Primitive::Int((x.tv_sec / 60) % 60)), + ); - idx.insert("uptime".to_string(), Value::Object(Dictionary::from(boottime_idx))); + idx.insert( + "uptime".to_string(), + Value::Object(Dictionary::from(boottime_idx)), + ); + } } let mut stream = VecDeque::new(); stream.push_back(ReturnValue::Value(Value::Object(Dictionary::from(idx)))); Ok(stream.boxed()) -} \ No newline at end of file +}