9e8f1bbeed
Dashboard / frontend (push) Failing after 0s
Dashboard / api (push) Failing after 0s
Lint PowerShell / powershell-lint (ubuntu-latest) (push) Failing after 1s
Python Lint / Lint Python with Ruff (push) Failing after 1s
ShellCheck / Lint shell scripts (push) Failing after 1s
Matrix Smoke / linux-smoke (push) Failing after 1s
Matrix Smoke / distro: cachyos (push) Failing after 15s
Matrix Smoke / distro: linux-mint-21.3 (push) Failing after 15s
Matrix Smoke / distro: debian-12 (push) Failing after 5m21s
Matrix Smoke / distro: fedora-41 (push) Failing after 4m56s
Matrix Smoke / distro: ubuntu-24.04 (push) Failing after 2m13s
Matrix Smoke / distro: rocky-9 (push) Failing after 10m39s
Matrix Smoke / distro: manjaro (push) Failing after 12m11s
Matrix Smoke / distro: opensuse-tw (push) Failing after 11m53s
Matrix Smoke / distro: archlinux (push) Failing after 20m3s
Matrix Smoke / distro: ubuntu-22.04 (push) Failing after 13m49s
Validate .env Schema / tier-1-env-validation (push) Successful in 52s
Validate .env Schema / tier-2-env-validation (push) Successful in 44s
Validate .env Schema / tier-3-env-validation (push) Successful in 52s
Validate .env Schema / tier-4-env-validation (push) Successful in 51s
Validate Extensions Catalog / Check catalog is up-to-date (push) Failing after 9m47s
Secret Scan / Scan for secrets (push) Failing after 21m4s
Validate Docker Compose / Validate Docker Compose files (push) Has been cancelled
Python Type Check / Type check with mypy (push) Has been cancelled
Validate .env Schema / tier-0-env-validation (push) Has been cancelled
Test Linux / integration-smoke (push) Has been cancelled
Lint PowerShell / powershell-lint (windows-latest) (push) Has been cancelled
Matrix Smoke / macos-smoke (push) Has been cancelled
74 lines
2.1 KiB
Rust
74 lines
2.1 KiB
Rust
use super::SystemInfo;
|
|
use std::process::Command;
|
|
|
|
pub fn check_system() -> SystemInfo {
|
|
let os_version = get_os_version();
|
|
let ram_gb = get_ram_gb();
|
|
let disk_free_gb = get_disk_free_gb();
|
|
let hostname = std::fs::read_to_string("/etc/hostname")
|
|
.map(|s| s.trim().to_string())
|
|
.unwrap_or_else(|_| "unknown".into());
|
|
|
|
SystemInfo {
|
|
os: "Linux".into(),
|
|
os_version,
|
|
arch: std::env::consts::ARCH.into(),
|
|
ram_gb,
|
|
disk_free_gb,
|
|
hostname,
|
|
wsl2_available: None,
|
|
wsl2_installed: None,
|
|
}
|
|
}
|
|
|
|
fn get_os_version() -> String {
|
|
// Try /etc/os-release first
|
|
if let Ok(content) = std::fs::read_to_string("/etc/os-release") {
|
|
for line in content.lines() {
|
|
if line.starts_with("PRETTY_NAME=") {
|
|
return line
|
|
.trim_start_matches("PRETTY_NAME=")
|
|
.trim_matches('"')
|
|
.to_string();
|
|
}
|
|
}
|
|
}
|
|
|
|
let out = Command::new("uname").args(["-sr"]).output();
|
|
match out {
|
|
Ok(o) if o.status.success() => String::from_utf8_lossy(&o.stdout).trim().to_string(),
|
|
_ => "Linux (unknown version)".into(),
|
|
}
|
|
}
|
|
|
|
fn get_ram_gb() -> f64 {
|
|
if let Ok(content) = std::fs::read_to_string("/proc/meminfo") {
|
|
for line in content.lines() {
|
|
if line.starts_with("MemTotal:") {
|
|
let parts: Vec<&str> = line.split_whitespace().collect();
|
|
if parts.len() >= 2 {
|
|
let kb: f64 = parts[1].parse().unwrap_or(0.0);
|
|
return kb / (1024.0 * 1024.0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
0.0
|
|
}
|
|
|
|
fn get_disk_free_gb() -> f64 {
|
|
let out = Command::new("df")
|
|
.args(["--output=avail", "-BG", "/"])
|
|
.output();
|
|
match out {
|
|
Ok(o) if o.status.success() => {
|
|
let text = String::from_utf8_lossy(&o.stdout);
|
|
if let Some(line) = text.lines().nth(1) {
|
|
return line.trim().trim_end_matches('G').parse().unwrap_or(0.0);
|
|
}
|
|
0.0
|
|
}
|
|
_ => 0.0,
|
|
}
|
|
}
|