Sha256: c6ea589dc6d6a1cea06a9e707a8668a35af1e90e29fabccc0740e500f418d345

Contents?: true

Size: 1.87 KB

Versions: 3

Compression:

Stored size: 1.87 KB

Contents

# frozen_string_literal: true

require_relative "../case/dsl/macro"
require_relative "../case/result/result"
require_relative "../utils/project"
require_relative "../utils/logger"
require_relative "dsl/all"
require_relative "show"

class Checker
  include DSL # Include case/DSL/macro functions only
  include CheckDSL

  attr_reader :result

  def initialize(script_path, config_path)
    @path = {}
    @path[:script] = script_path
    @path[:dirname] = File.dirname(script_path)
    @path[:filename] = File.basename(script_path, ".rb")
    @path[:config] = config_path
    reset
  end

  def reset
    @result = Result.new
    @targetid = 0
    @stats = {
      groups: 0,
      targets: 0,
      logs: 0,
      readmes: 0,
      uniques: 0,
      hosts: {},
      gets: {},
      sets: [],
      uploads: []
    }
    @target_begin = nil
  end

  def show
    Logger.verbose = true
    process_content
    cs = ShowCheck.new(stats: @stats, path: @path)
    cs.show_stats
    cs.revise_config_content
  end

  def show_onlyconfig
    Logger.verbose = false
    process_content
    Logger.verbose = true
    cs = ShowCheck.new(stats: @stats, path: @path)
    cs.suggest_config_content
  end

  private

  def process_content
    groups = Project.value[:groups]
    option = Project.value[:options]

    Logger.info ""
    if Project.value[:uses].size.positive?
      Logger.info Terminal::Table.new { |st| st.add_row ["USE: external libraries"] }
      Project.value[:uses].each_with_index { Logger.info "      #{_2 + 1}. #{_1}" }
    end
    groups.each do |t|
      @stats[:groups] += 1
      unless option[:panel]
        msg = "GROUP: #{t[:name]}"
        my_screen_table = Terminal::Table.new { |st| st.add_row [msg] }
        Logger.info my_screen_table
      end
      instance_eval(&t[:block])
    end
    if @target_begin
      Logger.warn "WARN  Last 'target' requires 'expect'\n"
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
teuton-2.9.2 lib/teuton/check/checker.rb
teuton-2.9.1 lib/teuton/check/checker.rb
teuton-2.9.0 lib/teuton/check/checker.rb