class Aruba::Platforms::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