Parent

Class/Module Index [+]

Quicksearch

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::Site] site The nanoc site this runner is for

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

Public Instance Methods

checks_filename() click to toggle source

@param [String] The name of the Checks file

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

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

# File lib/nanoc/extra/checking/runner.rb, line 22
def has_dsl?
  self.checks_filename && File.file?(self.checks_filename)
end
list_checks() click to toggle source

Lists all available checks on stdout.

@return [void]

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

  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/extra/checking/runner.rb, line 40
def run_all
  self.load_dsl_if_available

  self.run_check_classes(self.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/extra/checking/runner.rb, line 49
def run_for_deploy
  self.require_dsl

  return true if self.dsl.nil?
  self.run_check_classes(self.check_classes_named(self.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 61
def run_specific(check_class_names)
  self.load_dsl_if_available

  self.run_check_classes(self.check_classes_named(check_class_names))
end

Protected Instance Methods

all_check_classes() click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 98
def all_check_classes
  Nanoc::Extra::Checking::Check.all.map { |p| p.last }.uniq
end
check_classes_named(n) click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 102
def check_classes_named(n)
  classes = n.map do |a|
    klass = Nanoc::Extra::Checking::Check.named(a)
    raise Nanoc::Errors::GenericTrivial, "Unknown check: #{a}" if klass.nil?
    klass
  end
end
dsl() click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 88
def dsl
  @dsl
end
load_dsl_if_available() click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 69
def load_dsl_if_available
  @dsl_loaded ||= false
  if !@dsl_loaded
    if self.has_dsl?
      @dsl = Nanoc::Extra::Checking::DSL.from_file(self.checks_filename)
    else
      @dsl = nil
    end
    @dsl_loaded = true
  end
end
require_dsl() click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 81
def require_dsl
  self.load_dsl_if_available
  if self.dsl.nil?
    raise Nanoc::Errors::GenericTrivial, "No checks defined (no #{CHECKS_FILENAMES.first} file present)"
  end
end
run_check_classes(classes) click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 92
def run_check_classes(classes)
  issues = self.run_checks(classes)
  self.print_issues(issues)
  issues.empty? ? true : false
end
run_checks(classes) click to toggle source
# File lib/nanoc/extra/checking/runner.rb, line 110
def run_checks(classes)
  return [] if classes.empty?

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

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

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

    # TODO report progress

    puts check.issues.empty? ? 'ok'.green : 'error'.red
  end
  issues
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.