class Buildr::Console
A utility class that helps with colorizing output for interactive shells where appropriate
Public Class Methods
agree?(message)
click to toggle source
# File lib/buildr/core/console.rb, line 62 def agree?(message) puts "#{message} (Y or N)" :agree == ask('Y' => :agree, 'N' => :disagree) end
ask_password(prompt)
click to toggle source
# File lib/buildr/core/console.rb, line 67 def ask_password(prompt) puts prompt begin set_no_echo_mode password = $stdin.readline return password.chomp ensure reset_mode end end
color(message, color)
click to toggle source
Emit message with color at the start of the message and the clear color command at the end of the sequence.
# File lib/buildr/core/console.rb, line 30 def color(message, color) raise "Unknown color #{color.inspect}" unless [:green, :red, :blue].include?(color) return message unless use_color constants = {:green => "\e[32m", :red => "\e[31m", :blue => "\e[34m"} @java_console.putString("#{constants[color]}#{message}\e[0m") if @java_console "#{constants[color]}#{message}\e[0m" end
console_dimensions()
click to toggle source
Return the [rows, columns] of a console or nil if unknown
# File lib/buildr/core/console.rb, line 39 def console_dimensions begin if $stdout.isatty if /solaris/ =~ RUBY_PLATFORM and `stty` =~ /\brows = (\d+).*\bcolumns = (\d+)/ [$2, $1].map { |c| x.to_i } else `stty size 2> /dev/null`.split.map { |x| x.to_i }.reverse end else nil end rescue => e nil end end
output_cols()
click to toggle source
Return the number of columns in console or nil if unknown
# File lib/buildr/core/console.rb, line 57 def output_cols d = console_dimensions d ? d[0] : nil end
use_color()
click to toggle source
# File lib/buildr/core/console.rb, line 21 def use_color @use_color.nil? ? false : @use_color end
use_color=(use_color)
click to toggle source
# File lib/buildr/core/console.rb, line 25 def use_color=(use_color) @use_color = use_color end
Private Class Methods
ask(options)
click to toggle source
# File lib/buildr/core/console.rb, line 102 def ask(options) keys = options.keys keys_downcased = keys.collect { |k| k.downcase } result = nil show_prompt = false until keys_downcased.include?(result) puts "Invalid response. Valid responses include: #{keys.join(', ')}\n" if show_prompt show_prompt = true result = $stdin.readline result = result.strip.downcase if result end options.each_pair do |key, value| if key.downcase == result return value.is_a?(Proc) ? value.call : value end end return nil end
reset_mode()
click to toggle source
# File lib/buildr/core/console.rb, line 97 def reset_mode `stty #{@state} 2>/dev/null` @state = nil end
set_no_echo_mode()
click to toggle source
# File lib/buildr/core/console.rb, line 92 def set_no_echo_mode @state = `stty -g 2>/dev/null` `stty -echo -icanon 2>/dev/null` end