Skip to content

Commit ffa371a

Browse files
fix(updates): respect the RUSTUP_TERM_COLOR env var when styling progress bars
1 parent 160e3e4 commit ffa371a

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

src/cli/rustup_mode.rs

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -795,6 +795,11 @@ async fn default_(
795795
async fn check_updates(cfg: &Cfg<'_>, opts: CheckOpts) -> Result<utils::ExitCode> {
796796
let t = cfg.process.stdout().terminal(cfg.process);
797797
let is_a_tty = t.is_a_tty();
798+
let use_colors = match cfg.process.var("RUSTUP_TERM_COLOR").as_deref() {
799+
Ok("always") => true,
800+
Ok("never") => false,
801+
_ => is_a_tty,
802+
};
798803
let mut update_available = false;
799804
let channels = cfg.list_channels()?;
800805
let num_channels = channels.len();
@@ -825,25 +830,38 @@ async fn check_updates(cfg: &Cfg<'_>, opts: CheckOpts) -> Result<utils::ExitCode
825830
let dist_version = distributable.show_dist_version().await?;
826831
let mut update_a = false;
827832

828-
let styled_name = style(format!("{name} - ")).bold();
833+
let mut styled_name = style(format!("{name} - "));
834+
if use_colors {
835+
styled_name = styled_name.bold();
836+
}
829837
let message = match (current_version, dist_version) {
830838
(None, None) => {
831-
let m = style("Cannot identify installed or update versions")
832-
.red()
833-
.bold();
839+
let mut m = style("Cannot identify installed or update versions");
840+
if use_colors {
841+
m = m.red().bold();
842+
}
834843
format!("{styled_name}{m}")
835844
}
836845
(Some(cv), None) => {
837-
let m = style("Up to date").green().bold();
846+
let mut m = style("Up to date");
847+
if use_colors {
848+
m = m.green().bold();
849+
}
838850
format!("{styled_name}{m} : {cv}")
839851
}
840852
(Some(cv), Some(dv)) => {
841-
let m = style("Update available").yellow().bold();
853+
let mut m = style("Update available");
854+
if use_colors {
855+
m = m.yellow().bold();
856+
}
842857
update_a = true;
843858
format!("{styled_name}{m} : {cv} -> {dv}")
844859
}
845860
(None, Some(dv)) => {
846-
let m = style("Update available").yellow().bold();
861+
let mut m = style("Update available");
862+
if use_colors {
863+
m = m.yellow().bold();
864+
}
847865
update_a = true;
848866
format!("{styled_name}{m} : (Unknown version) -> {dv}")
849867
}

0 commit comments

Comments
 (0)