Expand description
Pager integration for long output (P2-29)
Provides automatic paging when output exceeds terminal height.
Uses external pagers like less, bat, or more.
§Features
- Auto-detection: Pages only when stdout is a TTY and output exceeds threshold
- Capped buffering: Max 1MB buffer, then streams to pager
- Cross-platform: Uses
terminal_sizecrate for terminal dimensions - Unicode-aware: Uses
unicode-widthfor accurate line-wrap calculation - Safe command parsing: Uses
shlexfor proper argument handling
§Example
ⓘ
use sqry_cli::output::pager::{BufferedOutput, PagerConfig, PagerExitStatus, PagerMode};
let config = PagerConfig {
enabled: PagerMode::Auto,
..Default::default()
};
let mut output = BufferedOutput::new(config);
output.write("Hello, world!\n")?;
// Finalize output - returns pager exit status
let status = output.finish()?;
if let Some(exit_code) = status.exit_code() {
std::process::exit(exit_code);
}Structs§
- Buffered
Output - Buffered output with capped streaming for auto mode
- Pager
Config - Configuration for pager behavior
- Pager
Decision - Determines whether to use pager for current output
- Pager
Writer - Manages output to pager process
Enums§
- Pager
Exit Status - Pager exit status for distinguishing normal exits from signal terminations
- Pager
Mode - Pager mode selection
Functions§
- count_
displayed_ rows - Count displayed rows accounting for line wrapping