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
# 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
      end
      abort if linter.errors? || (
        linter.warnings? && PuppetLint.configuration.fail_on_warnings
      )
    end
  end
end