Sha256: ac3c2acb62825ffbe2e4a8478647634e7434925b86072481891c125f93c6ff95

Contents?: true

Size: 1.3 KB

Versions: 5

Compression:

Stored size: 1.3 KB

Contents

require 'kafo_module_lint'

module KafoModuleLint
  class RakeTask < ::Rake::TaskLib
    include ::Rake::DSL if defined?(::Rake::DSL)

    DEFAULT_PATTERN = 'manifests/**/*.pp'

    attr_accessor :name
    attr_accessor :pattern
    attr_accessor :modulepath

    def initialize(*args, &task_block)
      @name = args.shift || :'lint:kafo_module'
      @pattern = DEFAULT_PATTERN
      @modulepath = File.join('spec', 'fixtures', 'modules')
      define(args, &task_block)
    end

    def define(args, &task_block)
      desc 'Lint Puppet module with KafoModuleLint'

      task_block.call(*[self, args].slice(0, task_block.arity)) if task_block

      Rake::Task[name].clear if Rake::Task.task_defined?(name)

      definition = Rake::Task.task_defined?('spec_prep') ? {name => [:'spec_prep']} : name
      task definition do
        RakeFileUtils.send(:verbose, true) do
          result = true
          TypeLoader.new(modulepath).with_types do
            FileList[pattern].each do |manifest|
              linter = Linter.new(manifest)
              result = false unless linter.pass?
              linter.puts_errors
            end
          end

          abort unless result
        end
      end

      Rake::Task[:lint].enhance [name] if Rake::Task.task_defined?('lint')
    end
  end
end

KafoModuleLint::RakeTask.new

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
kafo_module_lint-1.3.0 lib/kafo_module_lint/tasks.rb
kafo_module_lint-1.1.0 lib/kafo_module_lint/tasks.rb
kafo_module_lint-1.0.3 lib/kafo_module_lint/tasks.rb
kafo_module_lint-1.0.2 lib/kafo_module_lint/tasks.rb
kafo_module_lint-1.0.1 lib/kafo_module_lint/tasks.rb