Skip to main content

Crate nils_term

Crate nils_term 

Source
Expand description

Small terminal utilities shared across the workspace.

§Progress

nils-term provides a minimal, RAII-friendly progress abstraction that is safe for machine-readable stdout output.

  • Progress is drawn to stderr by default.
  • With ProgressEnabled::Auto (default), progress is enabled only when stderr is a TTY.

§Determinate progress

use nils_term::progress::{Progress, ProgressOptions};

let total = 3_u64;
let progress = Progress::new(total, ProgressOptions::default().with_prefix("work "));

for i in 0..total {
    progress.set_message(format!("item {i}"));
    progress.inc(1);
}

progress.finish();

§Spinner progress

use nils_term::progress::{Progress, ProgressFinish, ProgressOptions};

let spinner = Progress::spinner(
    ProgressOptions::default()
        .with_prefix("fetch ")
        .with_finish(ProgressFinish::Clear),
);

spinner.set_message("loading");
spinner.tick();
spinner.finish_and_clear();

§Library guidance

Prefer accepting a Progress (or ProgressOptions) from the caller instead of reading env vars inside library code. This keeps libraries deterministic and lets binaries decide whether to show progress (e.g. interactive vs CI).

Modules§

progress