diff options
| author | main <main@swarm.moe> | 2026-04-25 15:48:04 -0400 |
|---|---|---|
| committer | main <main@swarm.moe> | 2026-04-25 15:48:04 -0400 |
| commit | 0d04617ce57ae4925d6bdf91fc40a9e50e971149 (patch) | |
| tree | 769862bce31537bb009f88db04b20fcf50029a68 | |
| parent | ae06d596000757a96a1d41795ff4b758a146f15f (diff) | |
| download | memview-0d04617ce57ae4925d6bdf91fc40a9e50e971149.zip | |
Concentrate platform cfg boundary
| -rw-r--r-- | crates/memview/src/linux/app.rs (renamed from crates/memview/src/app.rs) | 16 | ||||
| -rw-r--r-- | crates/memview/src/linux/app/rows.rs (renamed from crates/memview/src/app/rows.rs) | 0 | ||||
| -rw-r--r-- | crates/memview/src/linux/app/tests.rs (renamed from crates/memview/src/app/tests.rs) | 4 | ||||
| -rw-r--r-- | crates/memview/src/linux/app/worker.rs (renamed from crates/memview/src/app/worker.rs) | 4 | ||||
| -rw-r--r-- | crates/memview/src/linux/mod.rs (renamed from crates/memview/src/linux.rs) | 14 | ||||
| -rw-r--r-- | crates/memview/src/linux/model.rs (renamed from crates/memview/src/model.rs) | 0 | ||||
| -rw-r--r-- | crates/memview/src/linux/nav.rs (renamed from crates/memview/src/nav.rs) | 0 | ||||
| -rw-r--r-- | crates/memview/src/linux/probe.rs (renamed from crates/memview/src/probe.rs) | 2 | ||||
| -rw-r--r-- | crates/memview/src/linux/search.rs (renamed from crates/memview/src/search.rs) | 2 | ||||
| -rw-r--r-- | crates/memview/src/linux/ui.rs (renamed from crates/memview/src/ui.rs) | 32 | ||||
| -rw-r--r-- | crates/memview/src/main.rs | 30 | ||||
| -rw-r--r-- | crates/memview/src/unsupported.rs | 8 |
12 files changed, 52 insertions, 60 deletions
diff --git a/crates/memview/src/app.rs b/crates/memview/src/linux/app.rs index f52afa5..9ace856 100644 --- a/crates/memview/src/app.rs +++ b/crates/memview/src/linux/app.rs @@ -1,10 +1,10 @@ -use crate::model::{ +use super::model::{ Bytes, LedgerState, Meminfo, Metric, ObjectKind, ObjectUsage, Pid, ProcessNode, SharedObject, Snapshot, TmpfsMount, TmpfsNode, TmpfsNodeKind, }; -pub use crate::nav::{Hotkey, HotkeySections, Tab}; -use crate::probe; -use crate::search::{Search, SearchDraft, SearchRole, SearchSummary}; +pub use super::nav::{Hotkey, HotkeySections, Tab}; +use super::probe; +use super::search::{Search, SearchDraft, SearchRole, SearchSummary}; use color_eyre::eyre::Result; use crossterm::event::{KeyCode, KeyEvent, KeyModifiers, MouseEvent, MouseEventKind}; use rustix::fd::OwnedFd; @@ -48,7 +48,7 @@ impl ProcessScope { } #[must_use] - pub fn rollup(self, node: &ProcessNode) -> crate::model::MemoryRollup { + pub fn rollup(self, node: &ProcessNode) -> super::model::MemoryRollup { match self { Self::SelfOnly => node.rollup, Self::SelfAndChildren => node.subtree, @@ -922,7 +922,7 @@ impl App { #[must_use] pub fn hotkey_sections(&self) -> HotkeySections { HotkeySections { - global: crate::nav::global_hotkeys(), + global: super::nav::global_hotkeys(), pane_title: self.tab.title(), pane: self.tab.hotkeys(), } @@ -1759,8 +1759,8 @@ fn empty_snapshot(meminfo: Meminfo) -> Snapshot { captured_at: SystemTime::now(), elapsed: Duration::ZERO, meminfo, - overview: crate::model::Overview::default(), - process_tree: crate::model::ProcessTree::default(), + overview: super::model::Overview::default(), + process_tree: super::model::ProcessTree::default(), shared_objects: Vec::new(), sysv_segments: Vec::new(), tmpfs_mounts: Vec::new(), diff --git a/crates/memview/src/app/rows.rs b/crates/memview/src/linux/app/rows.rs index d6d904d..d6d904d 100644 --- a/crates/memview/src/app/rows.rs +++ b/crates/memview/src/linux/app/rows.rs diff --git a/crates/memview/src/app/tests.rs b/crates/memview/src/linux/app/tests.rs index 1e9f8f8..583863a 100644 --- a/crates/memview/src/app/tests.rs +++ b/crates/memview/src/linux/app/tests.rs @@ -59,8 +59,8 @@ fn tmpfs_snapshot(mounts: Vec<TmpfsMount>) -> Snapshot { captured_at: SystemTime::UNIX_EPOCH, elapsed: Duration::ZERO, meminfo: Meminfo::default(), - overview: crate::model::Overview::default(), - process_tree: crate::model::ProcessTree::default(), + overview: super::super::model::Overview::default(), + process_tree: super::super::model::ProcessTree::default(), shared_objects: Vec::new(), sysv_segments: Vec::new(), tmpfs_mounts: mounts, diff --git a/crates/memview/src/app/worker.rs b/crates/memview/src/linux/app/worker.rs index 52bbc59..6efdb77 100644 --- a/crates/memview/src/app/worker.rs +++ b/crates/memview/src/linux/app/worker.rs @@ -1,5 +1,5 @@ -use crate::model::{Pid, Snapshot}; -use crate::probe; +use super::super::model::{Pid, Snapshot}; +use super::super::probe; use color_eyre::eyre::Result; use std::path::{Path, PathBuf}; use std::sync::mpsc::{self, Receiver, Sender}; diff --git a/crates/memview/src/linux.rs b/crates/memview/src/linux/mod.rs index 1454329..ee24a3e 100644 --- a/crates/memview/src/linux.rs +++ b/crates/memview/src/linux/mod.rs @@ -1,5 +1,11 @@ -use crate::app::{App, WorkerCommand, spawn_worker}; -use crate::ui; +mod app; +mod model; +mod nav; +mod probe; +mod search; +mod ui; + +use app::{App, WorkerCommand, spawn_worker}; use clap::Parser; use color_eyre::eyre::Result; use crossterm::cursor::{Hide, Show}; @@ -27,7 +33,9 @@ struct Cli { refresh_ms: u64, } -pub fn run() -> Result<()> { +pub type MainResult = Result<()>; + +pub fn run() -> MainResult { color_eyre::install()?; let cli = Cli::parse(); let (commands, events) = spawn_worker(Duration::from_millis(cli.refresh_ms)); diff --git a/crates/memview/src/model.rs b/crates/memview/src/linux/model.rs index a680332..a680332 100644 --- a/crates/memview/src/model.rs +++ b/crates/memview/src/linux/model.rs diff --git a/crates/memview/src/nav.rs b/crates/memview/src/linux/nav.rs index 88e85a9..88e85a9 100644 --- a/crates/memview/src/nav.rs +++ b/crates/memview/src/linux/nav.rs diff --git a/crates/memview/src/probe.rs b/crates/memview/src/linux/probe.rs index 1825ecb..b47a5fa 100644 --- a/crates/memview/src/probe.rs +++ b/crates/memview/src/linux/probe.rs @@ -1,4 +1,4 @@ -use crate::model::{ +use super::model::{ Bytes, LedgerState, Meminfo, MeminfoEntry, MemoryRollup, Metric, ObjectConsumer, ObjectKind, ObjectUsage, Overview, Pid, ProcessNode, ProcessTree, ProcessTreeStats, SharedObject, Snapshot, SysvSegment, TmpfsMount, TmpfsNode, TmpfsNodeKind, diff --git a/crates/memview/src/search.rs b/crates/memview/src/linux/search.rs index 1b31618..6d3d01f 100644 --- a/crates/memview/src/search.rs +++ b/crates/memview/src/linux/search.rs @@ -1,4 +1,4 @@ -use crate::model::Bytes; +use super::model::Bytes; use regex::Regex; #[derive(Clone, Debug)] diff --git a/crates/memview/src/ui.rs b/crates/memview/src/linux/ui.rs index 1da1e58..8d0b8a2 100644 --- a/crates/memview/src/ui.rs +++ b/crates/memview/src/linux/ui.rs @@ -1,6 +1,6 @@ -use crate::app::{App, FlatProcessRow, FlatSharedRow, FlatTmpfsRow, Hotkey, RowFold}; -use crate::model::{Bytes, Meminfo, MeminfoEntry, ObjectUsage, Pid, Snapshot, TmpfsMount}; -use crate::search::SearchRole; +use super::app::{App, FlatProcessRow, FlatSharedRow, FlatTmpfsRow, Hotkey, RowFold}; +use super::model::{Bytes, Meminfo, MeminfoEntry, ObjectUsage, Pid, Snapshot, TmpfsMount}; +use super::search::SearchRole; use ratatui::Frame; use ratatui::layout::{Constraint, Direction, Layout, Rect}; use ratatui::style::{Color, Modifier, Style}; @@ -46,10 +46,10 @@ pub fn render(frame: &mut Frame<'_>, app: &App) { fn render_body(frame: &mut Frame<'_>, app: &App, snapshot: &Snapshot, area: Rect) { match app.tab { - crate::app::Tab::Overview => render_overview(frame, app, snapshot, area), - crate::app::Tab::Processes => render_processes(frame, app, snapshot, area), - crate::app::Tab::Tmpfs => render_tmpfs(frame, app, snapshot, area), - crate::app::Tab::Shared => render_shared(frame, app, snapshot, area), + super::app::Tab::Overview => render_overview(frame, app, snapshot, area), + super::app::Tab::Processes => render_processes(frame, app, snapshot, area), + super::app::Tab::Tmpfs => render_tmpfs(frame, app, snapshot, area), + super::app::Tab::Shared => render_shared(frame, app, snapshot, area), } } @@ -64,7 +64,7 @@ fn header(app: &App) -> Paragraph<'static> { )); spans.push(Span::raw(" ")); for (index, label) in App::tab_labels().into_iter().enumerate() { - let style = if app.tab == crate::app::Tab::ALL[index] { + let style = if app.tab == super::app::Tab::ALL[index] { Style::default().fg(ACCENT).add_modifier(Modifier::BOLD) } else { Style::default().fg(MUTED) @@ -163,23 +163,23 @@ fn footer(app: &App) -> Paragraph<'static> { fn pane_footer(app: &App) -> &'static str { match app.tab { - crate::app::Tab::Overview => "r refresh overview s lens", - crate::app::Tab::Processes => { + super::app::Tab::Overview => "r refresh overview s lens", + super::app::Tab::Processes => { "j/k/Pg/wheel move gg/G edge Enter fold s sort m mode K SIGTERM r rescan" } - crate::app::Tab::Tmpfs => { + super::app::Tab::Tmpfs => { "j/k/Pg/wheel move gg/G edge Enter fold m mode d delete r refresh mount" } - crate::app::Tab::Shared => "j/k/Pg/wheel move gg/G edge s sort m mode r rescan", + super::app::Tab::Shared => "j/k/Pg/wheel move gg/G edge s sort m mode r rescan", } } fn render_loading(frame: &mut Frame<'_>, app: &App, area: Rect) { let (title, message) = match app.tab { - crate::app::Tab::Overview => ("Loading", "Reading kernel memory counters..."), - crate::app::Tab::Processes => ("Processes", "Capturing process memory snapshot..."), - crate::app::Tab::Tmpfs => ("Tmpfs", "Scanning tmpfs mounts..."), - crate::app::Tab::Shared => ("Shared", "Reading shared memory ledgers..."), + super::app::Tab::Overview => ("Loading", "Reading kernel memory counters..."), + super::app::Tab::Processes => ("Processes", "Capturing process memory snapshot..."), + super::app::Tab::Tmpfs => ("Tmpfs", "Scanning tmpfs mounts..."), + super::app::Tab::Shared => ("Shared", "Reading shared memory ledgers..."), }; frame.render_widget( Paragraph::new(message) diff --git a/crates/memview/src/main.rs b/crates/memview/src/main.rs index 64665b7..391733e 100644 --- a/crates/memview/src/main.rs +++ b/crates/memview/src/main.rs @@ -1,27 +1,7 @@ -#[cfg(target_os = "linux")] -mod app; -#[cfg(target_os = "linux")] -mod linux; -#[cfg(target_os = "linux")] -mod model; -#[cfg(target_os = "linux")] -mod nav; -#[cfg(target_os = "linux")] -mod probe; -#[cfg(target_os = "linux")] -mod search; -#[cfg(target_os = "linux")] -mod ui; +#[cfg_attr(target_os = "linux", path = "linux/mod.rs")] +#[cfg_attr(not(target_os = "linux"), path = "unsupported.rs")] +mod platform; -#[cfg(not(target_os = "linux"))] -mod unsupported; - -#[cfg(target_os = "linux")] -fn main() -> color_eyre::eyre::Result<()> { - linux::run() -} - -#[cfg(not(target_os = "linux"))] -fn main() { - unsupported::run(); +fn main() -> platform::MainResult { + platform::run() } diff --git a/crates/memview/src/unsupported.rs b/crates/memview/src/unsupported.rs index 9be3132..e3ea7b1 100644 --- a/crates/memview/src/unsupported.rs +++ b/crates/memview/src/unsupported.rs @@ -1,4 +1,8 @@ -pub fn run() -> ! { +use std::process::ExitCode; + +pub type MainResult = ExitCode; + +pub fn run() -> MainResult { eprintln!("memview is not supported on this system: Linux is required."); - std::process::exit(1); + ExitCode::FAILURE } |