77 lines
2.5 KiB
Markdown
77 lines
2.5 KiB
Markdown
|
# `console`
|
||
|
|
||
|
[![Build Status](https://github.com/console-rs/console/workflows/CI/badge.svg?branch=master)](https://github.com/console-rs/console/actions?query=workflow%3ACI)
|
||
|
[![Crates.io](https://img.shields.io/crates/d/console.svg)](https://crates.io/crates/console)
|
||
|
[![License](https://img.shields.io/github/license/console-rs/console)](https://github.com/console-rs/console/blob/master/LICENSE)
|
||
|
[![rustc 1.48.0](https://img.shields.io/badge/rust-1.48%2B-orange.svg)](https://img.shields.io/badge/rust-1.48%2B-orange.svg)
|
||
|
[![Documentation](https://docs.rs/console/badge.svg)](https://docs.rs/console)
|
||
|
|
||
|
**console** is a library for Rust that provides access to various terminal
|
||
|
features so you can build nicer looking command line interfaces. It
|
||
|
comes with various tools and utilities for working with Terminals and
|
||
|
formatting text.
|
||
|
|
||
|
Best paired with other libraries in the family:
|
||
|
|
||
|
* [dialoguer](https://docs.rs/dialoguer)
|
||
|
* [indicatif](https://docs.rs/indicatif)
|
||
|
|
||
|
## Terminal Access
|
||
|
|
||
|
The terminal is abstracted through the `console::Term` type. It can
|
||
|
either directly provide access to the connected terminal or by buffering
|
||
|
up commands. A buffered terminal will however not be completely buffered
|
||
|
on windows where cursor movements are currently directly passed through.
|
||
|
|
||
|
Example usage:
|
||
|
|
||
|
```rust
|
||
|
use std::thread;
|
||
|
use std::time::Duration;
|
||
|
|
||
|
use console::Term;
|
||
|
|
||
|
let term = Term::stdout();
|
||
|
term.write_line("Hello World!")?;
|
||
|
thread::sleep(Duration::from_millis(2000));
|
||
|
term.clear_line()?;
|
||
|
```
|
||
|
|
||
|
## Colors and Styles
|
||
|
|
||
|
`console` automaticaly detects when to use colors based on the tty flag. It also
|
||
|
provides higher level wrappers for styling text and other things that can be
|
||
|
displayed with the `style` function and utility types.
|
||
|
|
||
|
Example usage:
|
||
|
|
||
|
```rust
|
||
|
use console::style;
|
||
|
|
||
|
println!("This is {} neat", style("quite").cyan());
|
||
|
```
|
||
|
|
||
|
You can also store styles and apply them to text later:
|
||
|
|
||
|
```rust
|
||
|
use console::Style;
|
||
|
|
||
|
let cyan = Style::new().cyan();
|
||
|
println!("This is {} neat", cyan.apply_to("quite"));
|
||
|
```
|
||
|
|
||
|
## Working with ANSI Codes
|
||
|
|
||
|
The crate provides the function `strip_ansi_codes` to remove ANSI codes
|
||
|
from a string as well as `measure_text_width` to calculate the width of a
|
||
|
string as it would be displayed by the terminal. Both of those together
|
||
|
are useful for more complex formatting.
|
||
|
|
||
|
## Unicode Width Support
|
||
|
|
||
|
By default this crate depends on the `unicode-width` crate to calculate
|
||
|
the width of terminal characters. If you do not need this you can disable
|
||
|
the `unicode-width` feature which will cut down on dependencies.
|
||
|
|
||
|
License: MIT
|