diff --git a/Library/Homebrew/cmd/fetch.rb b/Library/Homebrew/cmd/fetch.rb index 359b3c5d2ba2bc..f2530515b10ba7 100644 --- a/Library/Homebrew/cmd/fetch.rb +++ b/Library/Homebrew/cmd/fetch.rb @@ -275,7 +275,7 @@ def run finished_downloads.each do |downloadable, future| previous_pending_line_count -= 1 - print "\033[K" + $stdout.print Tty.clear_to_end $stdout.flush output_message.call(downloadable, future) end @@ -284,13 +284,13 @@ def run remaining_downloads.each do |downloadable, future| break if previous_pending_line_count >= [concurrency, (Tty.height - 1)].min - print "\033[K" + $stdout.print Tty.clear_to_end $stdout.flush previous_pending_line_count += output_message.call(downloadable, future) end if previous_pending_line_count.positive? - $stdout.print "\033[#{previous_pending_line_count}A" + $stdout.print Tty.move_cursor_up(previous_pending_line_count) $stdout.flush end diff --git a/Library/Homebrew/utils/tty.rb b/Library/Homebrew/utils/tty.rb index cf500c0fb389bb..0a1c8efde5367a 100644 --- a/Library/Homebrew/utils/tty.rb +++ b/Library/Homebrew/utils/tty.rb @@ -51,6 +51,16 @@ def strip_ansi(string) string.gsub(/\033\[\d+(;\d+)*m/, "") end + sig { returns(String) } + def move_cursor_up(line_count) + "\033[#{line_count}A" + end + + sig { returns(String) } + def clear_to_end + "\033[K" + end + sig { returns(String) } def hide_cursor "\033[?25l"