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
# File lib/nanoc/checking/runner.rb, line 119 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
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