diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:19:13 +0000 |
commit | 218caa410aa38c29984be31a5229b9fa717560ee (patch) | |
tree | c54bd55eeb6e4c508940a30e94c0032fbd45d677 /vendor/is-terminal/README.md | |
parent | Releasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip |
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/is-terminal/README.md')
-rw-r--r-- | vendor/is-terminal/README.md | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/vendor/is-terminal/README.md b/vendor/is-terminal/README.md new file mode 100644 index 000000000..081d93685 --- /dev/null +++ b/vendor/is-terminal/README.md @@ -0,0 +1,104 @@ +<div align="center"> + <h1><code>is-terminal</code></h1> + + <p> + <strong>Test whether a given stream is a terminal</strong> + </p> + + <p> + <a href="https://github.com/sunfishcode/is-terminal/actions?query=workflow%3ACI"><img src="https://github.com/sunfishcode/is-terminal/workflows/CI/badge.svg" alt="Github Actions CI Status" /></a> + <a href="https://crates.io/crates/is-terminal"><img src="https://img.shields.io/crates/v/is-terminal.svg" alt="crates.io page" /></a> + <a href="https://docs.rs/is-terminal"><img src="https://docs.rs/is-terminal/badge.svg" alt="docs.rs docs" /></a> + </p> +</div> + +is-terminal is a simple utility that answers one question: + +> Is this a terminal? + +A "terminal", also known as a "tty", is an I/O device which may be interactive +and may support color and other special features. This crate doesn't provide +any of those features; it just answers this one question. + +On Unix-family platforms, this is effectively the same as the [`isatty`] +function for testing whether a given stream is a terminal, though it accepts +high-level stream types instead of raw file descriptors. + +On Windows, it uses a variety of techniques to determine whether the given +stream is a terminal. + +This crate is derived from [the atty crate] with [PR \#51] bug fix and +[PR \#54] port to windows-sys applied. The only additional difference is that +the atty crate only accepts stdin, stdout, or stderr, while this crate accepts +any stream. In particular, this crate does not access any stream that is not +passed to it, in accordance with [I/O safety]. + +[PR \#51]: https://github.com/softprops/atty/pull/51 +[PR \#54]: https://github.com/softprops/atty/pull/54 + +## Example + +```rust +use is_terminal::IsTerminal; + +fn main() { + if std::io::stdout().is_terminal() { + println!("Stdout is a terminal"); + } else { + println!("Stdout is not a terminal"); + } +} +``` + +## Testing + +This library is tested on both Unix-family and Windows platforms. + +To test it on a platform manually, use the provided `stdio` example program. +When run normally, it prints this: + +```bash +$ cargo run --example stdio +stdin? true +stdout? true +stderr? true +``` + +To test stdin, pipe some text to the program: + +```bash +$ cat | cargo run --example stdio +stdin? false +stdout? true +stderr? true +``` + +To test stdout, pipe the program to something: + +```bash +$ cargo run --example stdio | cat +stdin? true +stdout? false +stderr? true +``` + +To test stderr, pipe the program to something redirecting stderr: + +```bash +$ cargo run --example stdio 2>&1 | cat +stdin? true +stdout? false +stderr? false +``` + +# Minimum Supported Rust Version (MSRV) + +This crate currently works on the version of [Rust on Debian stable], which is +currently Rust 1.48. This policy may change in the future, in minor version +releases, so users using a fixed version of Rust should pin to a specific +version of this crate. + +[`isatty`]: https://man7.org/linux/man-pages/man3/isatty.3.html +[the atty crate]: https://crates.io/crates/atty +[I/O safety]: https://github.com/rust-lang/rfcs/blob/master/text/3128-io-safety.md +[Rust on Debian stable]: https://packages.debian.org/stable/rust/rustc |