Class: PuppetLint::RakeTask

Inherits:
Rake::TaskLib
  • Object
show all
Includes:
Rake::DSL
Defined in:
lib/puppet-lint/tasks/puppet-lint.rb

Overview

Public: A Rake task that can be loaded and used with everything you need.

Examples

require 'puppet-lint'
PuppetLint::RakeTask.new

Constant Summary collapse

DEFAULT_PATTERN =
'**/*.pp'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args, &task_block) ⇒ RakeTask

Public: Initialise a new PuppetLint::RakeTask.

args - Not used.

Example

PuppetLint::RakeTask.new

38
39
40
41
42
43
44
45
46
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 38

def initialize(*args, &task_block)
  @name = args.shift || :lint
  @pattern = DEFAULT_PATTERN
  @with_filename = true
  @disable_checks = []
  @ignore_paths = []

  define(args, &task_block)
end

Instance Attribute Details

#disable_checksObject

Returns the value of attribute disable_checks


22
23
24
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 22

def disable_checks
  @disable_checks
end

#error_levelObject

Returns the value of attribute error_level


24
25
26
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 24

def error_level
  @error_level
end

#fail_on_warningsObject

Returns the value of attribute fail_on_warnings


23
24
25
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 23

def fail_on_warnings
  @fail_on_warnings
end

#fixObject

Returns the value of attribute fix


27
28
29
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 27

def fix
  @fix
end

#ignore_pathsObject

Returns the value of attribute ignore_paths


20
21
22
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 20

def ignore_paths
  @ignore_paths
end

#log_formatObject

Returns the value of attribute log_format


25
26
27
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 25

def log_format
  @log_format
end

#nameObject

Returns the value of attribute name


18
19
20
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 18

def name
  @name
end

#patternObject

Returns the value of attribute pattern


19
20
21
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 19

def pattern
  @pattern
end

#relativeObject

Returns the value of attribute relative


29
30
31
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 29

def relative
  @relative
end

#show_ignoredObject

Returns the value of attribute show_ignored


28
29
30
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 28

def show_ignored
  @show_ignored
end

#with_contextObject

Returns the value of attribute with_context


26
27
28
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 26

def with_context
  @with_context
end

#with_filenameObject

Returns the value of attribute with_filename


21
22
23
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 21

def with_filename
  @with_filename
end

Instance Method Details

#define(args, &task_block) ⇒ Object


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/puppet-lint/tasks/puppet-lint.rb', line 48

def define(args, &task_block)
  desc 'Run puppet-lint'

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

  # clear any (auto-)pre-existing task
  Rake::Task[@name].clear if Rake::Task.task_defined?(@name)
  task @name do
    PuppetLint::OptParser.build

    Array(@disable_checks).each do |check|
      PuppetLint.configuration.send("disable_#{check}")
    end

    %w{with_filename fail_on_warnings error_level log_format with_context fix show_ignored relative}.each do |config|
      value = instance_variable_get("@#{config}")
      PuppetLint.configuration.send("#{config}=".to_sym, value) unless value.nil?
    end

    if PuppetLint.configuration.ignore_paths
      @ignore_paths = PuppetLint.configuration.ignore_paths
    end

    RakeFileUtils.send(:verbose, true) do
      linter = PuppetLint.new
      matched_files = FileList[@pattern]

      matched_files = matched_files.exclude(*@ignore_paths)

      matched_files.to_a.each do |puppet_file|
        linter.file = puppet_file
        linter.run
        linter.print_problems

        if PuppetLint.configuration.fix && !linter.problems.any? { |e| e[:check] == :syntax }
          IO.write(puppet_file, linter.manifest)
        end
      end
      abort if linter.errors? || (
        linter.warnings? && PuppetLint.configuration.fail_on_warnings
      )
    end
  end
end