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