diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-22 23:08:05 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-22 23:08:05 +0000 |
commit | 7825e8363d4b2ccad8e2d3f5eeba9e26f6656911 (patch) | |
tree | 83cbcf419e0feeb2ab0fd063ed85e0776eb0081b /lib/bundler/ui/shell.rb | |
parent | 73bed0312895322e0fd18310e840356c8e6af812 (diff) |
Postponing the Bundler merge.
I faced a big issue about Bundler with ruby core.
I have no time to resolve it issue before 2.5 final release.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/bundler/ui/shell.rb')
-rw-r--r-- | lib/bundler/ui/shell.rb | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/lib/bundler/ui/shell.rb b/lib/bundler/ui/shell.rb deleted file mode 100644 index 3b3b6bfb53..0000000000 --- a/lib/bundler/ui/shell.rb +++ /dev/null @@ -1,144 +0,0 @@ -# frozen_string_literal: true - -require "bundler/vendored_thor" - -module Bundler - module UI - class Shell - LEVELS = %w[silent error warn confirm info debug].freeze - - attr_writer :shell - - 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" - @warning_history = [] - end - - def add_color(string, *color) - @shell.set_color(string, *color) - end - - def info(msg, newline = nil) - tell_me(msg, nil, newline) if level("info") - end - - def confirm(msg, newline = nil) - tell_me(msg, :green, newline) if level("confirm") - end - - def warn(msg, newline = nil) - return unless level("warn") - return if @warning_history.include? msg - @warning_history << msg - - return tell_err(msg, :yellow, newline) if Bundler.feature_flag.error_on_stderr? - tell_me(msg, :yellow, newline) - end - - def error(msg, newline = nil) - return unless level("error") - return tell_err(msg, :red, newline) if Bundler.feature_flag.error_on_stderr? - tell_me(msg, :red, newline) - end - - def debug(msg, newline = nil) - tell_me(msg, nil, newline) if debug? - end - - def debug? - level("debug") - end - - def quiet? - level("quiet") - end - - def ask(msg) - @shell.ask(msg) - end - - def yes?(msg) - @shell.yes?(msg) - end - - def no? - @shell.no?(msg) - end - - def level=(level) - raise ArgumentError unless LEVELS.include?(level.to_s) - @level = level.to_s - end - - def level(name = nil) - return @level unless name - unless index = LEVELS.index(name) - raise "#{name.inspect} is not a valid level" - end - index <= LEVELS.index(@level) - end - - 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(&blk) - with_level("silent", &blk) - end - - def unprinted_warnings - [] - end - - private - - # valimism - def tell_me(msg, color = nil, newline = nil) - msg = word_wrap(msg) if newline.is_a?(Hash) && newline[:wrap] - if newline.nil? - @shell.say(msg, color) - else - @shell.say(msg, color, newline) - end - end - - def tell_err(message, color = nil, newline = nil) - newline = message.to_s !~ /( |\t)\Z/ unless newline - message = word_wrap(message) if newline.is_a?(Hash) && newline[:wrap] - - color = nil if color && !$stderr.tty? - - buffer = @shell.send(:prepare_message, message, *color) - buffer << "\n" if newline && !message.to_s.end_with?("\n") - - @shell.send(:stderr).print(buffer) - @shell.send(:stderr).flush - end - - def strip_leading_spaces(text) - spaces = text[/\A\s+/, 0] - 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 - end * "\n" - end - - def with_level(level) - original = @level - @level = level - yield - ensure - @level = original - end - end - end -end |