summaryrefslogtreecommitdiff
path: root/lib/bundler/ui.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bundler/ui.rb')
-rw-r--r--lib/bundler/ui.rb24
1 files changed, 22 insertions, 2 deletions
diff --git a/lib/bundler/ui.rb b/lib/bundler/ui.rb
index f1d3fe8f5f..3f5b97383f 100644
--- a/lib/bundler/ui.rb
+++ b/lib/bundler/ui.rb
@@ -8,6 +8,9 @@ module Bundler
def debug(message, newline = nil)
end
+ def trace(message, newline = nil)
+ end
+
def error(message, newline = nil)
end
@@ -25,10 +28,14 @@ module Bundler
attr_reader :quiet
attr_writer :shell
- def initialize(shell)
- @shell = shell
+ def initialize(options = {})
+ if options["no-color"] || !STDOUT.tty?
+ Thor::Base.shell = Thor::Shell::Basic
+ end
+ @shell = Thor::Base.shell.new
@quiet = false
@debug = ENV['DEBUG']
+ @trace = ENV['TRACE']
end
def info(msg, newline = nil)
@@ -51,6 +58,10 @@ module Bundler
@quiet = value
end
+ def quiet?
+ @quiet
+ end
+
def debug?
# needs to be false instead of nil to be newline param to other methods
!!@debug && !@quiet
@@ -64,6 +75,15 @@ module Bundler
tell_me(msg, nil, newline) if debug?
end
+ def trace(e, newline = nil)
+ msg = ["#{e.class}: #{e.message}", *e.backtrace].join("\n")
+ if debug?
+ tell_me(msg, nil, newline)
+ elsif @trace
+ STDERR.puts "#{msg}#{newline}"
+ end
+ end
+
private
# valimism
def tell_me(msg, color = nil, newline = nil)