Sha256: 531b8a411f1d8f4cff11c509272136ec2b79834dd91766a1aa9c01b5285154fb

Contents?: true

Size: 1.34 KB

Versions: 8

Compression:

Stored size: 1.34 KB

Contents

module Nanoc::Extra::Checking
  # @api private
  class OutputDirNotFoundError < Nanoc::Int::Errors::Generic
    def initialize(directory_path)
      super("Unable to run check against output directory at “#{directory_path}”: directory does not exist.")
    end
  end

  # @api private
  class Check < Nanoc::Int::Context
    extend Nanoc::Int::PluginRegistry::PluginMethods

    attr_reader :issues

    def self.create(site)
      output_dir = site.config[:output_dir]
      unless File.exist?(output_dir)
        raise Nanoc::Extra::Checking::OutputDirNotFoundError.new(output_dir)
      end
      output_filenames = Dir[output_dir + '/**/*'].select { |f| File.file?(f) }

      context = {
        items: Nanoc::ItemCollectionView.new(site.items),
        layouts: Nanoc::LayoutCollectionView.new(site.layouts),
        config: Nanoc::ConfigView.new(site.config),
        site: Nanoc::SiteView.new(site), # TODO: remove me
        output_filenames: output_filenames,
      }

      new(context)
    end

    def initialize(context)
      super(context)

      @issues = Set.new
    end

    def run
      raise NotImplementedError.new('Nanoc::Extra::Checking::Check subclasses must implement #run')
    end

    def add_issue(desc, params = {})
      subject = params.fetch(:subject, nil)

      @issues << Issue.new(desc, subject, self.class)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
nanoc-4.0.2 lib/nanoc/extra/checking/check.rb
nanoc-4.0.1 lib/nanoc/extra/checking/check.rb
nanoc-4.0.0 lib/nanoc/extra/checking/check.rb
nanoc-4.0.0rc3 lib/nanoc/extra/checking/check.rb
nanoc-4.0.0rc2 lib/nanoc/extra/checking/check.rb
nanoc-4.0.0rc1 lib/nanoc/extra/checking/check.rb
nanoc-4.0.0b4 lib/nanoc/extra/checking/check.rb
nanoc-4.0.0b3 lib/nanoc/extra/checking/check.rb