Class: Vagrant::UI::Prefixed

Inherits:
Interface show all
Defined in:
lib/vagrant/ui.rb

Overview

Prefixed wraps an existing UI and adds a prefix to it.

Constant Summary collapse

OUTPUT_PREFIX =

The prefix for output messages.

"==> "

Instance Attribute Summary

Attributes inherited from Interface

#stderr, #stdin, #stdout

Instance Method Summary collapse

Methods inherited from Interface

#color?

Constructor Details

#initialize(ui, prefix) ⇒ Prefixed

Returns a new instance of Prefixed.



260
261
262
263
264
265
# File 'lib/vagrant/ui.rb', line 260

def initialize(ui, prefix)
  super()

  @prefix = prefix
  @ui     = ui
end

Instance Method Details

#format_message(type, message, **opts) ⇒ Object



313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
# File 'lib/vagrant/ui.rb', line 313

def format_message(type, message, **opts)
  opts = self.opts.merge(opts)

  prefix = ""
  if !opts.key?(:prefix) || opts[:prefix]
    prefix = OUTPUT_PREFIX
    prefix = " " * OUTPUT_PREFIX.length if \
      type == :detail || type == :ask || opts[:prefix_spaces]
  end

  message = Util::CredentialScrubber.desensitize(message)

  # Fast-path if there is no prefix
  return message if prefix.empty?

  target = @prefix
  target = opts[:target] if opts.key?(:target)
  target = "#{target}:" if target != ""

  # Get the lines. The first default is because if the message
  # is an empty string, then we want to still use the empty string.
  lines = [message]
  lines = message.split("\n") if message != ""

  # Otherwise, make sure to prefix every line properly
  lines.map do |line|
    "#{prefix}#{target} #{line}"
  end.join("\n")
end

#initialize_copy(original) ⇒ Object



267
268
269
270
# File 'lib/vagrant/ui.rb', line 267

def initialize_copy(original)
  super
  @ui = original.instance_variable_get(:@ui).dup
end

#machine(type, *data) ⇒ Object

For machine-readable output, set the prefix in the options hash and continue it on.



298
299
300
301
302
303
304
# File 'lib/vagrant/ui.rb', line 298

def machine(type, *data)
  opts = {}
  opts = data.pop if data.last.is_a?(Hash)
  opts[:target] = @prefix
  data << opts
  @ui.machine(type, *data)
end

#optsHash

Return the parent's opts.

Returns:

  • (Hash)


309
310
311
# File 'lib/vagrant/ui.rb', line 309

def opts
  @ui.opts
end