class Codeowners::Cli::Main

Command Line Interface used by bin/codeowners-checker.

Public Instance Methods

check(repo = '.') click to toggle source

for pre-commit: –from HEAD –to index

# File lib/codeowners/cli/main.rb, line 25
def check(repo = '.')
  checker = create_checker(repo)
  Warner.warn("No whitelist found at #{checker.whitelist_filename}") unless
    checker.whitelist?

  if checker.consistent?
    Reporter.print '✅ File is consistent'
    exit 0
  end

  options[:interactive] ? interactive_mode(checker) : report_inconsistencies(checker)

  exit(-1)
end

Private Instance Methods

create_checker(repo) click to toggle source
# File lib/codeowners/cli/main.rb, line 65
def create_checker(repo)
  from = options[:from]
  to = options[:to] != 'index' ? options[:to] : nil
  checker = Codeowners::Checker.new(repo, from, to)
  checker.owners_list.validate_owners = options[:validateowners]
  checker
end
interactive_mode(checker) click to toggle source
# File lib/codeowners/cli/main.rb, line 51
def interactive_mode(checker)
  runner = InteractiveRunner.new
  runner.validate_owners = options[:validateowners]
  runner.default_owner = @config.default_owner
  runner.autocommit = options[:autocommit]

  runner.run_with(checker)
end
report_errors!(checker) click to toggle source
# File lib/codeowners/cli/main.rb, line 73
def report_errors!(checker)
  checker.fix!.reduce(nil) do |prev_error_type, (error_type, inconsistencies, meta)|
    Reporter.print_delimiter_line(error_type) if prev_error_type != error_type
    Reporter.print_error(error_type, inconsistencies, meta)
    error_type
  end
end
report_inconsistencies(checker) click to toggle source
# File lib/codeowners/cli/main.rb, line 60
def report_inconsistencies(checker)
  Reporter.print "File #{checker.codeowners.filename} is inconsistent:"
  report_errors!(checker)
end