Sha256: 38ef036a7e85338dc431a9d1dce6d310ef31973344c576efa6fc4c2c4ad5e539

Contents?: true

Size: 1.06 KB

Versions: 5

Compression:

Stored size: 1.06 KB

Contents

require 'knife-spork/plugins/plugin'

module KnifeSpork
  module Plugins
    class Foodcritic < Plugin
      name :foodcritic
      hooks :after_check, :before_upload

      def perform
        safe_require 'foodcritic'

        tags = config.tags || []
        fail_tags = config.fail_tags || ['any']
        include_rules = config.include_rules || []

        cookbooks.each do |cookbook|
          ui.info "Running foodcritic against #{cookbook.name}@#{cookbook.version}..."

          cookbook_path = cookbook.root_dir

          ui.info cookbook_path

          options = {:tags => tags, :fail_tags => fail_tags, :include_rules => include_rules}
          review = ::FoodCritic::Linter.new.check([cookbook_path], options)

          if review.failed?
            ui.error "Foodcritic failed!"
            review.to_s.split("\n").each{ |r| ui.error r.to_s }
            exit(1) if config.epic_fail
          else
            ui.info "Passed!"
          end
        end
      end

      def epic_fail?
        config.epic_fail.nil? ? 'true' : config.epic_fail
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
knife-spork-1.2.2 lib/knife-spork/plugins/foodcritic.rb
knife-spork-1.2.1 lib/knife-spork/plugins/foodcritic.rb
knife-spork-1.2.0 lib/knife-spork/plugins/foodcritic.rb
knife-spork-1.0.17 lib/knife-spork/plugins/foodcritic.rb
knife-spork-1.0.16 lib/knife-spork/plugins/foodcritic.rb