Skip to content
Snippets Groups Projects
Unverified Commit 13d14e64 authored by Nanda H Krishna's avatar Nanda H Krishna Committed by GitHub
Browse files

Merge pull request #8624 from nandahkrishna/tty-fix

utils/tty: handling a TTY stderr
parents 3cfa0f04 c1909e80
No related branches found
No related tags found
No related merge requests found
......@@ -256,7 +256,7 @@ class Tap
return if !full_clone || !shallow?
end
ohai "Unshallowing #{name}" unless quiet
$stderr.ohai "Unshallowing #{name}" unless quiet
args = %w[fetch --unshallow]
args << "-q" if quiet
path.cd { safe_system "git", *args }
......@@ -265,7 +265,7 @@ class Tap
clear_cache
ohai "Tapping #{name}" unless quiet
$stderr.ohai "Tapping #{name}" unless quiet
args = %W[clone #{requested_remote} #{path}]
args << "--depth=1" unless full_clone
args << "-q" if quiet
......@@ -291,7 +291,7 @@ class Tap
link_completions_and_manpages
formatted_contents = contents.presence&.to_sentence&.dup&.prepend(" ")
puts "Tapped#{formatted_contents} (#{path.abv})." unless quiet
$stderr.puts "Tapped#{formatted_contents} (#{path.abv})." unless quiet
CacheStoreDatabase.use(:descriptions) do |db|
DescriptionCacheStore.new(db)
.update_from_formula_names!(formula_names)
......@@ -301,7 +301,7 @@ class Tap
return unless private?
return if quiet
puts <<~EOS
$stderr.puts <<~EOS
It looks like you tapped a private repository. To avoid entering your
credentials each time you update, you can use git HTTP credential
caching or issue the following command:
......@@ -321,7 +321,7 @@ class Tap
require "descriptions"
raise TapUnavailableError, name unless installed?
puts "Untapping #{name}..."
$stderr.puts "Untapping #{name}..."
abv = path.abv
formatted_contents = contents.presence&.to_sentence&.dup&.prepend(" ")
......@@ -335,7 +335,7 @@ class Tap
Utils::Link.unlink_completions(path)
path.rmtree
path.parent.rmdir_if_possible
puts "Untapped#{formatted_contents} (#{abv})."
$stderr.puts "Untapped#{formatted_contents} (#{abv})."
Commands.rebuild_commands_completion_list
clear_cache
......@@ -625,7 +625,9 @@ class CoreTap < Tap
def install(full_clone: true, quiet: false, clone_target: nil, force_auto_update: nil)
remote = Homebrew::EnvConfig.core_git_remote
puts "HOMEBREW_CORE_GIT_REMOTE set: using #{remote} for Homebrew/core Git remote URL." if remote != default_remote
if remote != default_remote
$stderr.puts "HOMEBREW_CORE_GIT_REMOTE set: using #{remote} for Homebrew/core Git remote URL."
end
super(full_clone: full_clone, quiet: quiet, clone_target: remote, force_auto_update: force_auto_update)
end
......
......@@ -11,8 +11,7 @@ describe "brew tap", :integration_test do
path = setup_test_tap
expect { brew "tap", "--force-auto-update", "--full", "homebrew/bar", path/".git" }
.to output(/Tapped/).to_stdout
.and output(/Cloning/).to_stderr
.to output(/Tapped/).to_stderr
.and be_a_success
end
end
......@@ -11,8 +11,8 @@ describe "brew untap", :integration_test do
setup_test_tap
expect { brew "untap", "homebrew/foo" }
.to output(/Untapped/).to_stdout
.and not_to_output.to_stderr
.to output(/Untapped/).to_stderr
.and not_to_output.to_stdout
.and be_a_success
end
end
......@@ -131,11 +131,15 @@ module Kernel
# Print a warning (do this rarely)
def opoo(message)
$stderr.puts Formatter.warning(message, label: "Warning")
Tty.with($stderr) do |stderr|
stderr.puts Formatter.warning(message, label: "Warning")
end
end
def onoe(message)
$stderr.puts Formatter.error(message, label: "Error")
Tty.with($stderr) do |stderr|
stderr.puts Formatter.error(message, label: "Error")
end
end
def ofail(error)
......
......@@ -4,8 +4,19 @@
#
# @api private
module Tty
@stream = $stdout
module_function
def with(stream)
previous_stream = @stream
@stream = stream
yield stream
ensure
@stream = previous_stream
end
def strip_ansi(string)
string.gsub(/\033\[\d+(;\d+)*m/, "")
end
......@@ -78,6 +89,6 @@ module Tty
return false if Homebrew::EnvConfig.no_color?
return true if Homebrew::EnvConfig.color?
$stdout.tty?
@stream.tty?
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment