class Aruba::Platforms::Announcer

Announcer

@private

@example Activate your you own channel in cucumber

Before('@announce-my-channel') do
  aruba.announcer.activate :my_channel
end

@example Activate your you own channel in rspec > 3

before do
  current_example = context.example
  if current_example.metadata[:announce_my_channel]
    aruba.announcer.activate :my_channel
  end
end

Aruba.announcer.announce(:my_channel, 'my message')

Attributes

announcer[R]
announcers[R]
channels[R]
colorizer[R]
output_formats[R]

Public Class Methods

new() click to toggle source
# File lib/aruba/platforms/announcer.rb, line 67
def initialize
  @announcers = []
  @announcers << PutsAnnouncer.new
  @announcers << KernelPutsAnnouncer.new

  @colorizer = Aruba::Colorizer.new

  @announcer         = @announcers.first
  @channels          = {}
  @output_formats    = {}

  after_init
end

Public Instance Methods

activate(*chns) click to toggle source

Activate a channel

@param [Symbol] chns

The name of the channel to activate
# File lib/aruba/platforms/announcer.rb, line 158
def activate(*chns)
  chns.flatten.each { |c| channels[c.to_sym] = true }

  self
end
activated?(channel) click to toggle source

Check if channel is activated

@param [Symbol] channel

The name of the channel to check
# File lib/aruba/platforms/announcer.rb, line 150
def activated?(channel)
  channels[channel.to_sym] == true
end
announce(channel, *args) { || ... } click to toggle source

Announce information to channel

@param [Symbol] channel

The name of the channel to check

@param [Array] args

Arguments

@yield

If block is given, that one is called and the return value is used as
message to be announced.
# File lib/aruba/platforms/announcer.rb, line 175
def announce(channel, *args)
  channel = channel.to_sym

  the_output_format = if output_formats.key? channel
                        output_formats[channel]
                      else
                        proc { |v| format("%s", v) }
                      end

  return unless activated?(channel)

  begin
    if block_given?
      value = yield
      args << value
    end

    message = the_output_format.call(*args)
    message += "\n"
    message = colorizer.cyan(message)
  rescue NotImplementedError => e
    message = "Error fetching announced value for #{channel}: #{e.message}"
  end

  announcer.announce(message)

  nil
end
mode() click to toggle source

Fecth mode of announcer

@return [Symbol] The current announcer mode

# File lib/aruba/platforms/announcer.rb, line 142
def mode
  @announcer.mode
end
mode=(m) click to toggle source

Change mode of announcer

@param [Symbol] m

The mode to set
# File lib/aruba/platforms/announcer.rb, line 135
def mode=(m)
  @announcer = @announcers.find { |a| a.mode? m.to_sym }
end
reset() click to toggle source

Reset announcer

# File lib/aruba/platforms/announcer.rb, line 127
def reset
  @announcer = @announcers.first
end

Private Instance Methods

after_init() click to toggle source
# File lib/aruba/platforms/announcer.rb, line 83
def after_init
  output_format :changed_configuration, proc { |n, v| format("# %s = %s", n, v) }
  output_format :changed_environment,
                proc { |n, v| format("$ export %s=%s", n, Shellwords.escape(v)) }
  output_format :command, "$ %s"
  output_format :directory, "$ cd %s"
  output_format :environment,
                proc { |n, v| format("$ export %s=%s", n, Shellwords.escape(v)) }
  output_format :full_environment,
                proc { |h|
                  format("<<-ENVIRONMENT\n%s\nENVIRONMENT",
                         Aruba.platform.simple_table(h))
                }
  output_format :modified_environment,
                proc { |n, v| format("$ export %s=%s", n, Shellwords.escape(v)) }
  output_format :stderr, "<<-STDERR\n%s\nSTDERR"
  output_format :stdout, "<<-STDOUT\n%s\nSTDOUT"
  output_format :command_content, "<<-COMMAND\n%s\nCOMMAND"
  output_format :stop_signal,
                proc { |p, s|
                  format("Command will be stopped with `kill -%s %s`", s, p)
                }
  output_format :timeout, "# %s-timeout: %s seconds"
  output_format :wait_time, "# %s: %s seconds"
  output_format :command_filesystem_status,
                proc { |status|
                  format("<<-COMMAND FILESYSTEM STATUS\n%s\nCOMMAND FILESYSTEM STATUS",
                         Aruba.platform.simple_table(status.to_h, sort: false))
                }
end
output_format(channel, string = "%s", &block) click to toggle source
# File lib/aruba/platforms/announcer.rb, line 114
def output_format(channel, string = "%s", &block)
  output_formats[channel.to_sym] = if block
                                     block
                                   elsif string.is_a?(Proc)
                                     string
                                   else
                                     proc { |*args| format(string, *args) }
                                   end
end