aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/utils.rb
diff options
context:
space:
mode:
authorMarkus Reiter2016-10-15 18:51:11 +0200
committerGitHub2016-10-15 18:51:11 +0200
commitc233cacaf283a42940bdf3f607d82dab07d746a4 (patch)
tree2c27248754a6c2b234adc7faae70e28c67ca0d17 /Library/Homebrew/utils.rb
parent527a62b64bd8c578af08540166a8b1fd5bce521f (diff)
parent581a1245bf2c038a2f35fb10445592c7655108e3 (diff)
downloadbrew-c233cacaf283a42940bdf3f607d82dab07d746a4.tar.bz2
Merge pull request #1208 from reitermarkus/puts-columns
Refactor `puts_columns` to allow `$stderr.puts_columns`.
Diffstat (limited to 'Library/Homebrew/utils.rb')
-rw-r--r--Library/Homebrew/utils.rb49
1 files changed, 6 insertions, 43 deletions
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb
index 79e5287e8..fce03f888 100644
--- a/Library/Homebrew/utils.rb
+++ b/Library/Homebrew/utils.rb
@@ -1,16 +1,16 @@
require "pathname"
require "emoji"
require "exceptions"
+require "utils/analytics"
+require "utils/curl"
+require "utils/fork"
require "utils/formatter"
+require "utils/git"
+require "utils/github"
require "utils/hash"
-require "utils/json"
require "utils/inreplace"
+require "utils/json"
require "utils/popen"
-require "utils/fork"
-require "utils/git"
-require "utils/analytics"
-require "utils/github"
-require "utils/curl"
require "utils/tty"
def ohai(title, *sput)
@@ -286,43 +286,6 @@ def quiet_system(cmd, *args)
end
end
-def puts_columns(items)
- return if items.empty?
-
- unless $stdout.tty?
- puts items
- return
- end
-
- # TTY case: If possible, output using multiple columns.
- console_width = Tty.width
- console_width = 80 if console_width <= 0
- plain_item_lengths = items.map { |s| Tty.strip_ansi(s).length }
- max_len = plain_item_lengths.max
- col_gap = 2 # number of spaces between columns
- gap_str = " " * col_gap
- cols = (console_width + col_gap) / (max_len + col_gap)
- cols = 1 if cols < 1
- rows = (items.size + cols - 1) / cols
- cols = (items.size + rows - 1) / rows # avoid empty trailing columns
-
- if cols >= 2
- col_width = (console_width + col_gap) / cols - col_gap
- items = items.each_with_index.map do |item, index|
- item + "".ljust(col_width - plain_item_lengths[index])
- end
- end
-
- if cols == 1
- puts items
- else
- rows.times do |row_index|
- item_indices_for_row = row_index.step(items.size - 1, rows).to_a
- puts items.values_at(*item_indices_for_row).join(gap_str)
- end
- end
-end
-
def which(cmd, path = ENV["PATH"])
path.split(File::PATH_SEPARATOR).each do |p|
begin