fdai7381
2 years ago
3 changed files with 179 additions and 3 deletions
-
129Cargo.lock
-
2Cargo.toml
-
51src/builtins/fetch.rs
@ -1,11 +1,58 @@ |
|||
use crate::builtins::{Builtin, BuiltinConfig};
|
|||
use crate::error::ShellError;
|
|||
|
|||
use super::{Builtin, BuiltinConfig};
|
|||
use colored::Colorize;
|
|||
use sysinfo::{CpuExt, System, SystemExt};
|
|||
use uname::uname;
|
|||
use whoami::{hostname, username};
|
|||
|
|||
pub struct Fetch;
|
|||
|
|||
impl Builtin for Fetch {
|
|||
fn execute(&mut self, _: &mut BuiltinConfig, _: Vec<String>) -> Result<(), ShellError> {
|
|||
let mut sys = System::new();
|
|||
sys.refresh_all();
|
|||
|
|||
let line = "-".repeat(username().len() + hostname().len() + 1);
|
|||
|
|||
println!(
|
|||
"\n{}{}{}",
|
|||
username().bright_green().bold(),
|
|||
"@".bold(),
|
|||
hostname().bright_green().bold()
|
|||
);
|
|||
println!("{}", line);
|
|||
println!(
|
|||
"{} {} {}",
|
|||
"OS".bright_blue().bold(),
|
|||
sys.name().unwrap_or_default(),
|
|||
uname().unwrap().machine
|
|||
);
|
|||
println!(
|
|||
"{} {}",
|
|||
"KERNEL".yellow().bold(),
|
|||
sys.kernel_version().unwrap_or_default()
|
|||
);
|
|||
println!("{} {}", "UPTIME".red().bold(), format_uptime(sys.uptime()));
|
|||
println!("{} {}", "CPU".magenta().bold(), sys.cpus()[0].brand());
|
|||
println!(
|
|||
"{} {}MB / {}MB",
|
|||
"MEMORY".cyan().bold(),
|
|||
bytes_to_mega_bytes(sys.used_memory()),
|
|||
bytes_to_mega_bytes(sys.total_memory())
|
|||
);
|
|||
|
|||
Ok(())
|
|||
}
|
|||
}
|
|||
|
|||
fn format_uptime(uptime: u64) -> String {
|
|||
let h = uptime / 3600;
|
|||
let m = (uptime - h * 3600) / 60;
|
|||
let s = uptime - (h * 3600 + m * 60);
|
|||
|
|||
format!("{:.0}h {:.0}m {:.0}s", h, m, s)
|
|||
}
|
|||
|
|||
fn bytes_to_mega_bytes(bytes: u64) -> u64 {
|
|||
bytes / 1024 / 1024
|
|||
}
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue