class U3dCore::Shell
Shell
is the terminal output of things For documentation for each of the methods open `interface.rb`
Public Class Methods
new(test_log_buffer: nil)
click to toggle source
test_log_buffer: by default, don't show any logs when running tests
# File lib/u3d_core/ui/implementations/shell.rb, line 29 def initialize(test_log_buffer: nil) @test_log_buffer = test_log_buffer end
Public Instance Methods
command(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 109 def command(message) log.info("$ #{message}".cyan.underline) end
command_output(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 113 def command_output(message) actual = (message.split("\r").last || "") # as clearing the line will remove the `>` and the time stamp actual.split("\n").each do |msg| prefix = msg.include?("▸") ? "" : "▸ " log.info(prefix + "" + msg.magenta) end end
confirm(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 148 def confirm(message) verify_interactive!(message) agree("#{format_string}#{message.to_s.yellow} (y/n)", true) end
deprecated(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 105 def deprecated(message) log.error(message.to_s.bold.blue) end
error(message)
click to toggle source
@!group Messaging: show text to the user
# File lib/u3d_core/ui/implementations/shell.rb, line 89 def error(message) log.error(message.to_s.red) end
format_string(datetime = Time.now, severity = "")
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 67 def format_string(datetime = Time.now, severity = "") if U3dCore::Globals.log_timestamps? timestamp = ENV["U3D_UI_TIMESTAMP"] # default timestamp if none specified timestamp ||= if U3dCore::Globals.verbose? '%Y-%m-%d %H:%M:%S.%2N' else '%H:%M:%S' end end # hide has last word timestamp = nil if ENV["U3D_HIDE_TIMESTAMP"] s = [] s << "#{severity} " if U3dCore::Globals.verbose? && severity && !severity.empty? s << "[#{datetime.strftime(timestamp)}] " if timestamp s.join('') end
header(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 125 def header(message) i = message.length + 8 success("-" * i) success("--- " + message + " ---") success("-" * i) end
important(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 93 def important(message) log.warn(message.to_s.yellow) end
input(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 143 def input(message) verify_interactive!(message) ask("#{format_string}#{message.to_s.yellow}").to_s.strip end
interactive?()
click to toggle source
@!group Errors: Inputs
# File lib/u3d_core/ui/implementations/shell.rb, line 136 def interactive? interactive = true interactive = false if $stdout.isatty == false interactive = false if Helper.ci? return interactive end
log()
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 33 def log return @log if @log $stdout.sync = true @log ||= if Helper.test? Logger.new(@test_log_buffer) else Logger.new(EPipeIgnorerLogDevice.new($stdout)) end @log.formatter = proc do |severity, datetime, _progname, msg| "#{format_string(datetime, severity)}#{msg}\n" end require 'u3d_core/ui/disable_colors' if U3dCore::Helper.colors_disabled? @log end
message(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 101 def message(message) log.info(message.to_s) end
password(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 160 def password(message) verify_interactive!(message) ask("#{format_string}#{message.to_s.yellow}") { |q| q.echo = "*" } end
select(message, options)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 153 def select(message, options) verify_interactive!(message) important(message) choose(*options) end
success(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 97 def success(message) log.info(message.to_s.green) end
verbose(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 121 def verbose(message) log.debug(message.to_s) if U3dCore::Globals.verbose? end
Private Instance Methods
verify_interactive!(message)
click to toggle source
# File lib/u3d_core/ui/implementations/shell.rb, line 168 def verify_interactive!(message) return if interactive? important(message) crash!("Could not retrieve response as u3d runs in non-interactive mode") end