lib/bundler/ui/shell.rb in bundler-1.10.6 vs lib/bundler/ui/shell.rb in bundler-1.11.0.pre.1
- old
+ new
@@ -1,6 +1,6 @@
-require 'bundler/vendored_thor'
+require "bundler/vendored_thor"
module Bundler
module UI
class Shell
LEVELS = %w(silent error warn confirm info debug)
@@ -10,11 +10,12 @@
def initialize(options = {})
if options["no-color"] || !STDOUT.tty?
Thor::Base.shell = Thor::Shell::Basic
end
@shell = Thor::Base.shell.new
- @level = ENV['DEBUG'] ? "debug" : "info"
+ @level = ENV["DEBUG"] ? "debug" : "info"
+ @warning_history = []
end
def info(msg, newline = nil)
tell_me(msg, nil, newline) if level("info")
end
@@ -22,10 +23,12 @@
def confirm(msg, newline = nil)
tell_me(msg, :green, newline) if level("confirm")
end
def warn(msg, newline = nil)
+ return if @warning_history.include? msg
+ @warning_history << msg
tell_me(msg, :yellow, newline) if level("warn")
end
def error(msg, newline = nil)
tell_me(msg, :red, newline) if level("error")
@@ -63,18 +66,19 @@
def level(name = nil)
name ? LEVELS.index(name) <= LEVELS.index(@level) : @level
end
- def trace(e, newline = nil)
- return unless debug?
+ def trace(e, newline = nil, force = false)
+ return unless debug? || force
msg = "#{e.class}: #{e.message}\n#{e.backtrace.join("\n ")}"
tell_me(msg, nil, newline)
end
def silence
- old_level, @level = @level, "silent"
+ old_level = @level
+ @level = "silent"
yield
ensure
@level = old_level
end
@@ -90,10 +94,10 @@
end
end
def strip_leading_spaces(text)
spaces = text[/\A\s+/, 0]
- spaces ? text.gsub(/#{spaces}/, '') : text
+ spaces ? text.gsub(/#{spaces}/, "") : text
end
def word_wrap(text, line_width = @shell.terminal_width)
strip_leading_spaces(text).split("\n").collect do |line|
line.length > line_width ? line.gsub(/(.{1,#{line_width}})(\s+|$)/, "\\1\n").strip : line