class Nanoc::Extra::Checking::Runner

Runner is reponsible for running issue checks.

@api private

Constants

CHECKS_FILENAMES

Public Class Methods

new(site) click to toggle source

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

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

Public Instance Methods

all_check_classes() click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 95
def all_check_classes
  Nanoc::Extra::Checking::Check.all.map(&:last).uniq
end
check_classes_named(n) click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 99
def check_classes_named(n)
  n.map do |a|
    klass = Nanoc::Extra::Checking::Check.named(a)
    raise Nanoc::Int::Errors::GenericTrivial, "Unknown check: #{a}" if klass.nil?
    klass
  end
end
checks_filename() click to toggle source

@return [String] The name of the Checks file

# File lib/nanoc/extra/checking/runner.rb, line 14
def checks_filename
  @_checks_filename ||= CHECKS_FILENAMES.find { |f| File.file?(f) }
end
dsl() click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 85
def dsl
  @dsl
end
dsl_present?() click to toggle source

@return [Boolean] true if a Checks file exists, false otherwise

# File lib/nanoc/extra/checking/runner.rb, line 19
def dsl_present?
  checks_filename && File.file?(checks_filename)
end
Also aliased as: has_dsl?
has_dsl?()
Alias for: dsl_present?
list_checks() click to toggle source

Lists all available checks on stdout.

@return [void]

# File lib/nanoc/extra/checking/runner.rb, line 27
def list_checks
  load_dsl_if_available

  puts 'Available checks:'
  puts
  puts all_check_classes.map { |i| '  ' + i.identifier.to_s }.sort.join("\n")
end
load_dsl_if_available() click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 65
def load_dsl_if_available
  @dsl_loaded ||= false
  unless @dsl_loaded
    @dsl =
      if dsl_present?
        Nanoc::Extra::Checking::DSL.from_file(checks_filename)
      else
        nil
      end
    @dsl_loaded = true
  end
end
print_issues(issues) click to toggle source
require_dsl() click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 78
def require_dsl
  load_dsl_if_available
  if dsl.nil?
    raise Nanoc::Int::Errors::GenericTrivial, "No checks defined (no #{CHECKS_FILENAMES.first} file present)"
  end
end
run_all() click to toggle source

Runs all checks.

@return [Boolean] true if successful, false otherwise

# File lib/nanoc/extra/checking/runner.rb, line 38
def run_all
  load_dsl_if_available

  run_check_classes(all_check_classes)
end
run_check_classes(classes) click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 89
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/extra/checking/runner.rb, line 107
def run_checks(classes)
  return [] if classes.empty?

  # TODO: remove me
  @site.compiler.build_reps

  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
run_for_deploy() click to toggle source

Runs the checks marked for deployment.

@return [Boolean] true if successful, false otherwise

# File lib/nanoc/extra/checking/runner.rb, line 47
def run_for_deploy
  require_dsl

  return true if dsl.nil?
  run_check_classes(check_classes_named(dsl.deploy_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/extra/checking/runner.rb, line 59
def run_specific(check_class_names)
  load_dsl_if_available

  run_check_classes(check_classes_named(check_class_names))
end
subject_to_s(s) click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 132
def subject_to_s(s)
  s || '(global)'
end