From d8bad768a6ebe0bffac4081f033741997b0b8a64 Mon Sep 17 00:00:00 2001 From: Sola Date: Tue, 31 Dec 2024 03:47:29 +0800 Subject: [PATCH 1/2] Replace `sys-info` with `sysinfo` crate --- Cargo.toml | 4 ++-- example-report.md | 4 +--- src/collector.rs | 51 +++-------------------------------------------- 3 files changed, 6 insertions(+), 53 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index df3c9a9..e5874c0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ version = "0.5.0" [features] default = ["collector_operating_system", "git_hash", "format_markdown"] -collector_operating_system = ["sys-info"] +collector_operating_system = ["dep:sysinfo"] git_hash = ["git-version"] @@ -27,7 +27,7 @@ format_markdown = [] format_plaintext = [] [dependencies] -sys-info = { version = "0.9", optional = true } +sysinfo = { version = "0.33.1", optional = true } git-version = { version = "0.3", optional = true } shell-escape = "0.1" diff --git a/example-report.md b/example-report.md index d34a0b9..e7f1b74 100644 --- a/example-report.md +++ b/example-report.md @@ -4,7 +4,7 @@ bugreport 0.4.0 (4687617) #### Operating system -Linux 5.11.14-arch1-1 +Linux (Ubuntu 24.04) #### Command-line @@ -37,5 +37,3 @@ Python 3.9.3 - Endian: little - CPU features: fxsr,sse,sse2 - Host: x86_64-unknown-linux-gnu - - diff --git a/src/collector.rs b/src/collector.rs index 4b4c543..df43e9f 100644 --- a/src/collector.rs +++ b/src/collector.rs @@ -147,54 +147,9 @@ impl Collector for OperatingSystem { } fn collect(&mut self, _: &CrateInfo) -> Result { - use std::ops::Deref; - use sys_info::{os_release, os_type}; - - let os_type = os_type() - .map_err(|_| CollectionError::CouldNotRetrieve("Operating system type".into()))?; - let os_release = os_release(); - let os_release = os_release - .as_ref() - .map(|t| t.deref()) - .unwrap_or("(unknown version)"); - - #[cfg(target_os = "macos")] - return Ok(ReportEntry::Text(format!( - "{} ({} {})", - macos_info_string(), - os_type, - os_release - ))); - - #[cfg(not(target_os = "macos"))] - Ok(ReportEntry::Text(format!("{} {}", os_type, os_release))) - } -} - -#[cfg(all(feature = "collector_operating_system", target_os = "macos"))] -fn macos_info() -> Result<(String, String)> { - fn sw_vers(arg: &str) -> Result { - let stdout = Command::new("sw_vers") - .arg(arg) - .output() - .map_err(|err| CollectionError::CouldNotRetrieve(err.to_string()))? - .stdout; - - Ok(String::from_utf8_lossy(&stdout).trim().to_owned()) - } - - let macos_name = sw_vers("-productName")?; - let macos_version = sw_vers("-productVersion")?; - - Ok((macos_name, macos_version)) -} - -#[cfg(all(feature = "collector_operating_system", target_os = "macos"))] -fn macos_info_string() -> String { - if let Ok((name, version)) = macos_info() { - format!("{} {}", name, version) - } else { - "Unknown".to_owned() + Ok(ReportEntry::Text( + sysinfo::System::long_os_version().unwrap_or_else(|| "Unknown".to_owned()), + )) } } From c92357c8e1110e69273d7a671b3738210af017e1 Mon Sep 17 00:00:00 2001 From: Sola Date: Sat, 4 Jan 2025 10:16:53 +0800 Subject: [PATCH 2/2] Add kernel version info --- example-report.md | 3 ++- src/collector.rs | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/example-report.md b/example-report.md index e7f1b74..f7440f5 100644 --- a/example-report.md +++ b/example-report.md @@ -4,7 +4,8 @@ bugreport 0.4.0 (4687617) #### Operating system -Linux (Ubuntu 24.04) +- OS: Linux (Ubuntu 24.04) +- Kernel: 6.8.0-48-generic #### Command-line diff --git a/src/collector.rs b/src/collector.rs index df43e9f..59bc1c9 100644 --- a/src/collector.rs +++ b/src/collector.rs @@ -147,9 +147,16 @@ impl Collector for OperatingSystem { } fn collect(&mut self, _: &CrateInfo) -> Result { - Ok(ReportEntry::Text( - sysinfo::System::long_os_version().unwrap_or_else(|| "Unknown".to_owned()), - )) + Ok(ReportEntry::List(vec![ + ReportEntry::Text(format!( + "OS: {}", + sysinfo::System::long_os_version().unwrap_or_else(|| "Unknown".to_owned()), + )), + ReportEntry::Text(format!( + "Kernel: {}", + sysinfo::System::kernel_version().unwrap_or_else(|| "Unknown".to_owned()), + )), + ])) } }