class Nanoc::Checking::Runner

Runner is reponsible for running issue checks.

@api private

Public Class Methods

new(site) click to toggle source

@param [Nanoc::Core::Site] site The Nanoc site this runner is for

# File lib/nanoc/checking/runner.rb, line 10
def initialize(site)
  @site = site
end

Public Instance Methods

any_enabled_checks?() click to toggle source
# File lib/nanoc/checking/runner.rb, line 14
def any_enabled_checks?
  enabled_checks.any?
end
list_checks() click to toggle source

Lists all available checks on stdout.

@return [void]

# File lib/nanoc/checking/runner.rb, line 21
def list_checks
  load_all

  puts 'Available checks:'
  puts
  puts all_check_classes.map { |i| '  ' + i.identifier.to_s }.sort.join("\n")
end
run_all() click to toggle source

Runs all checks.

@return [Boolean] true if successful, false otherwise

# File lib/nanoc/checking/runner.rb, line 32
def run_all
  load_all
  run_check_classes(all_check_classes)
end
run_for_deploy() click to toggle source

Runs the checks marked for deployment.

@return [Boolean] true if successful, false otherwise

# File lib/nanoc/checking/runner.rb, line 40
def run_for_deploy
  # TODO: rename to #run_enabled
  load_all
  run_check_classes(check_classes_named(enabled_checks))
end
run_specific(check_class_names) click to toggle source

Runs the checks with the given names.

@param [Array<Symbol>] check_class_names The names of the checks

@return [Boolean] true if successful, false otherwise

# File lib/nanoc/checking/runner.rb, line 51
def run_specific(check_class_names)
  load_all
  run_check_classes(check_classes_named(check_class_names))
end

Private Instance Methods

all_check_classes() click to toggle source
# File lib/nanoc/checking/runner.rb, line 76
def all_check_classes
  Nanoc::Checking::Check.all
end
check_classes_named(names) click to toggle source
# File lib/nanoc/checking/runner.rb, line 80
def check_classes_named(names)
  names.map do |name|
    name = name.to_s.tr('-', '_').to_sym
    klass = Nanoc::Checking::Check.named(name)
    raise Nanoc::Core::TrivialError, "Unknown check: #{name}" if klass.nil?

    klass
  end
end
enabled_checks() click to toggle source
# File lib/nanoc/checking/runner.rb, line 66
def enabled_checks
  loader.enabled_checks
end
load_all() click to toggle source
# File lib/nanoc/checking/runner.rb, line 62
def load_all
  loader.run
end
loader() click to toggle source
# File lib/nanoc/checking/runner.rb, line 58
def loader
  @loader ||= Nanoc::Checking::Loader.new(config: @site.config)
end
print_issues(issues) click to toggle source
run_check_classes(classes) click to toggle source
# File lib/nanoc/checking/runner.rb, line 70
def run_check_classes(classes)
  issues = run_checks(classes)
  print_issues(issues)
  issues.empty? ? true : false
end
run_checks(classes) click to toggle source
# File lib/nanoc/checking/runner.rb, line 90
def run_checks(classes)
  return [] if classes.empty?

  # TODO: remove me
  Nanoc::Core::Compiler.new_for(@site).run_until_reps_built

  checks = []
  issues = Set.new
  length = classes.map { |c| c.identifier.to_s.length }.max + 18
  classes.each do |klass|
    print format("  %-#{length}s", "Running check #{klass.identifier}… ")

    check = klass.create(@site)
    check.run

    checks << check
    issues.merge(check.issues)

    # TODO: report progress

    puts check.issues.empty? ? 'ok'.green : 'error'.red
  end
  issues
end
subject_to_s(str) click to toggle source
# File lib/nanoc/checking/runner.rb, line 115
def subject_to_s(str)
  str || '(global)'
end