forked from mirrors/jj
cli: use is_tty()
from crossterm
crate instead of atty
The `atty` crate seems unmaintained. There's https://rustsec.org/advisories/RUSTSEC-2021-0145 filed against it, which `cargo-deny` complains about. A fix for that has been open for well over a year without being fixed (https://github.com/softprops/atty/pull/51). It turns out the functionality is also available via the `crossterm` crate (thanks, @yuja), which we already depend on. Since we also depend on `atty` via `clap`, I also added an exception to the `cargo-deny` config.
This commit is contained in:
parent
94815a7cb5
commit
3e0f6ef2b9
4 changed files with 6 additions and 7 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
@ -716,7 +716,6 @@ name = "jujutsu"
|
|||
version = "0.5.1"
|
||||
dependencies = [
|
||||
"assert_cmd",
|
||||
"atty",
|
||||
"chrono",
|
||||
"clap 4.0.26",
|
||||
"clap_complete",
|
||||
|
|
|
@ -34,7 +34,6 @@ harness = false
|
|||
members = ["lib"]
|
||||
|
||||
[dependencies]
|
||||
atty = "0.2.14"
|
||||
chrono = { version = "0.4.23", default-features = false, features = ["std", "clock"] }
|
||||
clap = { version = "4.0.26", features = ["derive", "deprecated"] }
|
||||
clap_complete = "4.0.5"
|
||||
|
|
|
@ -51,6 +51,7 @@ notice = "warn"
|
|||
# output a note when they are encountered.
|
||||
ignore = [
|
||||
#"RUSTSEC-0000-0000",
|
||||
"RUSTSEC-2021-0145",
|
||||
]
|
||||
# Threshold for security vulnerabilities, any vulnerability with a CVSS score
|
||||
# lower than the range specified will be ignored. Note that ignored advisories
|
||||
|
|
10
src/ui.rs
10
src/ui.rs
|
@ -17,7 +17,7 @@ use std::path::{Path, PathBuf};
|
|||
use std::str::FromStr;
|
||||
use std::{fmt, io};
|
||||
|
||||
use atty::Stream;
|
||||
use crossterm::tty::IsTty;
|
||||
use jujutsu_lib::settings::UserSettings;
|
||||
|
||||
use crate::formatter::{Formatter, FormatterFactory};
|
||||
|
@ -80,7 +80,7 @@ fn use_color(choice: ColorChoice) -> bool {
|
|||
match choice {
|
||||
ColorChoice::Always => true,
|
||||
ColorChoice::Never => false,
|
||||
ColorChoice::Auto => atty::is(Stream::Stdout),
|
||||
ColorChoice::Auto => io::stdout().is_tty(),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -154,7 +154,7 @@ impl Ui {
|
|||
/// Whether continuous feedback should be displayed for long-running
|
||||
/// operations
|
||||
pub fn use_progress_indicator(&self) -> bool {
|
||||
self.settings().use_progress_indicator() && atty::is(Stream::Stdout)
|
||||
self.settings().use_progress_indicator() && io::stdout().is_tty()
|
||||
}
|
||||
|
||||
pub fn write(&mut self, text: &str) -> io::Result<()> {
|
||||
|
@ -208,7 +208,7 @@ impl Ui {
|
|||
}
|
||||
|
||||
pub fn prompt(&mut self, prompt: &str) -> io::Result<String> {
|
||||
if !atty::is(Stream::Stdout) {
|
||||
if !io::stdout().is_tty() {
|
||||
return Err(io::Error::new(
|
||||
io::ErrorKind::Unsupported,
|
||||
"Cannot prompt for input since the output is not connected to a terminal",
|
||||
|
@ -222,7 +222,7 @@ impl Ui {
|
|||
}
|
||||
|
||||
pub fn prompt_password(&mut self, prompt: &str) -> io::Result<String> {
|
||||
if !atty::is(Stream::Stdout) {
|
||||
if !io::stdout().is_tty() {
|
||||
return Err(io::Error::new(
|
||||
io::ErrorKind::Unsupported,
|
||||
"Cannot prompt for input since the output is not connected to a terminal",
|
||||
|
|
Loading…
Reference in a new issue