Termprogress - Terminal progress bars

Simple and customiseable terminal progress bars for Rust.

Features

How it looks

The bar at 50, 75, and 100%:

shell

The spinner in 4 stages:

shell Some title / Some title - Some title \ Some title |

Getting started.

To quickly use the default bar and spinner, you can include the prelude:

``` rust use termprogress::prelude::*;

let mut progress = Bar::default(); // Create a new progress bar

progress.settitle("Work is being done..."); /// *does work* progress.setprogress(0.25); progress.setprogress(0.5); progress.println("Something happened"); progress.setprogress(0.75); progress.println("Almost done..."); progress.set_progress(1.0);

/// completes progress.complete(); ```

Spinner:

``` rust use termprogress::prelude::*;

let mut spinner = Spin::default(); //Create a new spinner /// does work spinner.bump(); spinner.bump(); progress.println("Something happened"); spinner.bump(); spinner.bump();

/// completes progress.complete_with("Done!"); ```

Default features

By default, the size feature is enabled, which requires the dependency terminal_size. Without this, Bar will not attempt to get the terminal's size to prevent overflows. You can disable it with default-features=false.

Traits

The library comes with traits for progress bars: ProgressBar, and Spinner.

The default implementations for these are Bar and Spin, but you can provide your own implementations too for more customisability.

There is also Silent, which implements both ProgressBar and Spinner, and does nothing, to allow for easily turning off or on progress displays depending on config.

``` rust pub fn doeswork(bar: &mut P) { //does work... bar.setprogress(0.5); //more work... bar.set_progress(1.0); }

doeswork(&mut Bar::default()); doeswork(&mut MyBar::new());

if NOPROGRESS { doeswotk(&mut Silent) } else { doeswork(&mut Bar::default()) } ```

License

GPL'd with love <3