class Hieracles::Formats::Console

format accepting colors for display in the terminal

Constants

COLORS

Public Class Methods

new(node) click to toggle source
Calls superclass method Hieracles::Format::new
# File lib/hieracles/formats/console.rb, line 23
def initialize(node)
  @colors = {}
  super(node)
end

Public Instance Methods

build_list(hash, notifications, filter) click to toggle source
# File lib/hieracles/formats/console.rb, line 36
def build_list(hash, notifications, filter)
  back = ''
  if hash.class.name == 'Array'
    hash.each do |v|
      back << "#{v}\n"
    end
  else
    back << build_notifications(notifications) if notifications
    if filter[0]
      hash.select! { |k, v| Regexp.new(filter[0]).match(k.to_s) }
    end
    length = max_key_length(hash) + 2
    title = format(COLORS[8], "%-#{length}s")
    hash.each do |k, v|
      if v.class.name == 'Hash' || v.class.name == 'Array'
        v = v.ai({ indent: 10, raw: true}).strip
      end
      back << format("#{title} %s\n", k, v)
    end
  end
  back
end
build_modules_line(key, value) click to toggle source
# File lib/hieracles/formats/console.rb, line 113
def build_modules_line(key, value)
  length = max_key_length(@node.modules) + 3
  value_color = '%s'
  value_color = COLORS[0] if /not found/i.match value
  value_color = COLORS[2] if /\(duplicate\)/i.match value
  format("%-#{length}s #{value_color}\n", key, value)
end
build_notifications(notifications) click to toggle source
# File lib/hieracles/formats/console.rb, line 59
def build_notifications(notifications)
  back = "\n"
  notifications.each do |v|
    back << format("#{COLORS[9]}\n", "*** #{v.source}: #{v.message} ***")
  end
  back << "\n"
  back
end
facts(filter) click to toggle source
# File lib/hieracles/formats/console.rb, line 32
def facts(filter)
  build_list(@node.facts, @node.notifications, filter)
end
files(_) click to toggle source
# File lib/hieracles/formats/console.rb, line 68
def files(_)
  @node.files.join("\n") + "\n"
end
info(filter) click to toggle source
# File lib/hieracles/formats/console.rb, line 28
def info(filter)
  build_list(@node.info, @node.notifications, filter)
end
paths(_) click to toggle source
# File lib/hieracles/formats/console.rb, line 72
def paths(_)
  @node.paths.join("\n") + "\n"
end
show_params(without_common, args) click to toggle source
# File lib/hieracles/formats/console.rb, line 76
def show_params(without_common, args)
  filter = args[0]
  output = "[-] (merged)\n"
  @node.files(without_common).each_with_index do |f, i|
    output << format("#{COLORS[i]}\n", "[#{i}] #{f}")
    @colors[f] = i
  end
  output << "\n"
  @node.params(without_common).each do |key, v|
    if !filter || Regexp.new(filter).match(key)
      filecolor_index = @colors[v[:file]]
      if v[:overriden]
        output << format(
          "%s #{COLORS[7]} %s\n", "[-]",
          key,
          sanitize(v[:value])
          )
        v[:found_in].each do |val|
          filecolor_index = @colors[val[:file]]
          output << format(
            "    #{COLORS[8]}\n",
            "[#{filecolor_index}] #{key} #{val[:value]}"
            )
        end
      else
        filecolor = COLORS[filecolor_index]
        output << format(
          "#{filecolor} #{COLORS[7]} %s\n", "[#{filecolor_index}]",
          key,
          sanitize(v[:value])
          )
      end
    end
  end
  output
end