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?
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
# File lib/nanoc/extra/checking/runner.rb, line 136 def print_issues(issues) require 'colored' return if issues.empty? puts 'Issues found!' issues.group_by(&:subject).to_a.sort_by { |s| subject_to_s(s.first) }.each do |pair| subject = pair.first issues = pair.last next if issues.empty? puts " #{subject_to_s(subject)}:" issues.each do |i| puts " [ #{'ERROR'.red} ] #{i.check_class.identifier} - #{i.description}" end end end
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