class AxR::Runner

Constants

DOT_RB

Attributes

exit_on_warnings[R]
exit_on_warnings?[R]
formatter[R]
target[R]

Public Class Methods

new(target = nil, formatter: AxR::Formatters::Default.new, exit_on_warnings: false) click to toggle source
# File lib/axr/runner.rb, line 12
def initialize(target = nil, formatter: AxR::Formatters::Default.new, exit_on_warnings: false)
  @target            = target
  @formatter         = formatter
  @exit_on_warnings = exit_on_warnings
end

Public Instance Methods

files_to_scan() click to toggle source
# File lib/axr/runner.rb, line 35
def files_to_scan
  @files_to_scan ||= scan_single_file? ? [target] : Dir.glob("#{target_dir}**/*#{DOT_RB}")
end
invoke() click to toggle source
# File lib/axr/runner.rb, line 20
def invoke
  files_with_warnings = files_to_scan.each_with_object({}) do |file_path, issues|
    scan_result       = AxR::Scanner.new(source: File.open(file_path)).scan
    issues[file_path] = scan_result.warnings if scan_result.warnings.any?

    formatter.single_file(scan_result, file_path)
  end

  formatter.summary(files_to_scan, files_with_warnings)

  exit 1 if exit_on_warnings? && files_with_warnings.any?

  files_with_warnings
end

Private Instance Methods

scan_single_file?() click to toggle source
# File lib/axr/runner.rb, line 41
def scan_single_file?
  return false unless target
  return false unless target.end_with?(DOT_RB)

  target
end
target_dir() click to toggle source
# File lib/axr/runner.rb, line 48
def target_dir
  return unless target

  "#{target}/"
end