aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike McQuaid2018-02-12 20:50:34 +0000
committerGitHub2018-02-12 20:50:34 +0000
commitb3f0e571f4cdcc29dd6982b863fdcd7de5e6febf (patch)
tree8385418921e394d17a57d368835a0640a1bec171
parent602696bcb8823e8a24aa87d646aef8c6a108ce4b (diff)
parent7388acb86e0b9811e6badd610255954b3b3a6453 (diff)
downloadbrew-b3f0e571f4cdcc29dd6982b863fdcd7de5e6febf.tar.bz2
Merge pull request #3090 from jcs/no_color
Tty: if NO_COLOR env var is present, disable color
-rw-r--r--Library/Homebrew/manpages/brew.1.md.erb3
-rw-r--r--Library/Homebrew/test/cask/dsl_spec.rb1
-rw-r--r--Library/Homebrew/test/utils/tty_spec.rb14
-rw-r--r--Library/Homebrew/utils/tty.rb4
-rwxr-xr-xbin/brew2
-rw-r--r--docs/Manpage.md3
-rw-r--r--manpages/brew.14
7 files changed, 28 insertions, 3 deletions
diff --git a/Library/Homebrew/manpages/brew.1.md.erb b/Library/Homebrew/manpages/brew.1.md.erb
index 508c90f2d..fbe6fca94 100644
--- a/Library/Homebrew/manpages/brew.1.md.erb
+++ b/Library/Homebrew/manpages/brew.1.md.erb
@@ -199,6 +199,9 @@ can take several different forms:
If set, Homebrew will not auto-update before running `brew install`,
`brew upgrade` or `brew tap`.
+ * `HOMEBREW_NO_COLOR`:
+ If set, Homebrew will not print text with color added.
+
* `HOMEBREW_NO_EMOJI`:
If set, Homebrew will not print the `HOMEBREW_INSTALL_BADGE` on a
successful build.
diff --git a/Library/Homebrew/test/cask/dsl_spec.rb b/Library/Homebrew/test/cask/dsl_spec.rb
index d3bb46264..993c03bac 100644
--- a/Library/Homebrew/test/cask/dsl_spec.rb
+++ b/Library/Homebrew/test/cask/dsl_spec.rb
@@ -75,6 +75,7 @@ describe Hbc::DSL, :cask do
it "may use deprecated DSL version hash syntax" do
allow(ENV).to receive(:[]).with("HOMEBREW_DEVELOPER").and_return(nil)
+ allow(ENV).to receive(:[]).with("HOMEBREW_NO_COLOR").and_return(nil)
expect(cask.token).to eq("with-dsl-version")
expect(cask.url.to_s).to eq("http://example.com/TestCask.dmg")
diff --git a/Library/Homebrew/test/utils/tty_spec.rb b/Library/Homebrew/test/utils/tty_spec.rb
index 3ba89b6fd..e6c9168f3 100644
--- a/Library/Homebrew/test/utils/tty_spec.rb
+++ b/Library/Homebrew/test/utils/tty_spec.rb
@@ -53,7 +53,7 @@ describe Tty do
allow($stdout).to receive(:tty?).and_return(true)
end
- it "returns an empty string for all colors" do
+ it "returns ANSI escape codes for colors" do
expect(subject.to_s).to eq("")
expect(subject.red.to_s).to eq("\033[31m")
expect(subject.green.to_s).to eq("\033[32m")
@@ -63,5 +63,17 @@ describe Tty do
expect(subject.cyan.to_s).to eq("\033[36m")
expect(subject.default.to_s).to eq("\033[39m")
end
+
+ it "returns an empty string for all colors when HOMEBREW_NO_COLOR is set" do
+ ENV["HOMEBREW_NO_COLOR"] = "1"
+ expect(subject.to_s).to eq("")
+ expect(subject.red.to_s).to eq("")
+ expect(subject.green.to_s).to eq("")
+ expect(subject.yellow.to_s).to eq("")
+ expect(subject.blue.to_s).to eq("")
+ expect(subject.magenta.to_s).to eq("")
+ expect(subject.cyan.to_s).to eq("")
+ expect(subject.default.to_s).to eq("")
+ end
end
end
diff --git a/Library/Homebrew/utils/tty.rb b/Library/Homebrew/utils/tty.rb
index e872e6460..81d5f00d7 100644
--- a/Library/Homebrew/utils/tty.rb
+++ b/Library/Homebrew/utils/tty.rb
@@ -59,7 +59,9 @@ module Tty
end
def to_s
- return "" unless $stdout.tty?
+ if ENV["HOMEBREW_NO_COLOR"] || !$stdout.tty?
+ return ""
+ end
current_escape_sequence
ensure
reset_escape_sequence!
diff --git a/bin/brew b/bin/brew
index 34c28056b..b3a4d6272 100755
--- a/bin/brew
+++ b/bin/brew
@@ -47,7 +47,7 @@ HOMEBREW_LIBRARY="$HOMEBREW_REPOSITORY/Library"
# Whitelist and copy to HOMEBREW_* all variables previously mentioned in
# manpage or used elsewhere by Homebrew.
for VAR in AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY BINTRAY_USER BINTRAY_KEY \
- BROWSER EDITOR GIT PATH VISUAL \
+ BROWSER EDITOR GIT NO_COLOR PATH VISUAL \
GITHUB_USER GITHUB_PASSWORD GITHUB_TOKEN
do
# Skip if variable value is empty.
diff --git a/docs/Manpage.md b/docs/Manpage.md
index 920518376..e4f189490 100644
--- a/docs/Manpage.md
+++ b/docs/Manpage.md
@@ -1037,6 +1037,9 @@ can take several different forms:
If set, Homebrew will not auto-update before running `brew install`,
`brew upgrade` or `brew tap`.
+ * `HOMEBREW_NO_COLOR`:
+ If set, Homebrew will not print text with color added.
+
* `HOMEBREW_NO_EMOJI`:
If set, Homebrew will not print the `HOMEBREW_INSTALL_BADGE` on a
successful build.
diff --git a/manpages/brew.1 b/manpages/brew.1
index 56581bfc0..4f373558c 100644
--- a/manpages/brew.1
+++ b/manpages/brew.1
@@ -1059,6 +1059,10 @@ If set, Homebrew will not send analytics\. See: \fIhttps://docs\.brew\.sh/Analyt
If set, Homebrew will not auto\-update before running \fBbrew install\fR, \fBbrew upgrade\fR or \fBbrew tap\fR\.
.
.TP
+\fBHOMEBREW_NO_COLOR\fR
+If set, Homebrew will not print text with color added\.
+.
+.TP
\fBHOMEBREW_NO_EMOJI\fR
If set, Homebrew will not print the \fBHOMEBREW_INSTALL_BADGE\fR on a successful build\.
.