Class: PuppetSyntax::RakeTask

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

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ RakeTask

Returns a new instance of RakeTask.



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
# File 'lib/puppet-syntax/tasks/puppet-syntax.rb', line 27

def initialize(*args)
  desc 'Syntax check Puppet manifests and templates'
  task :syntax => [
    'syntax:manifests',
    'syntax:templates',
    'syntax:hiera',
  ]

  namespace :syntax do
    desc 'Syntax check Puppet manifests'
    task :manifests do |t|
      $stderr.puts "---> #{t.name}"

      c = PuppetSyntax::Manifests.new
      output, has_errors = c.check(filelist_manifests)
      $stdout.puts "#{output.join("\n")}\n" unless output.empty?
      exit 1 if has_errors || ( output.any? && PuppetSyntax.fail_on_deprecation_notices )
    end

    desc 'Syntax check Puppet templates'
    task :templates do |t|
      $stderr.puts "---> #{t.name}"

      c = PuppetSyntax::Templates.new
      result = c.check(filelist_templates)
      unless result[:warnings].empty?
        $stdout.puts "WARNINGS:"
        $stdout.puts result[:warnings].join("\n")
      end
      unless result[:errors].empty?
        $stderr.puts "ERRORS:"
        $stderr.puts result[:errors].join("\n")
        exit 1
      end
    end

    desc 'Syntax check Hiera config files'
    task :hiera => [
      'syntax:hiera:yaml',
    ]

    namespace :hiera do
      task :yaml do |t|
        $stderr.puts "---> #{t.name}"
        c = PuppetSyntax::Hiera.new
        errors = c.check(filelist_hiera_yaml)
        $stdout.puts "#{errors.join("\n")}\n" unless errors.empty?
        exit 1 unless errors.empty?
      end
    end
  end
end

Instance Method Details

#filelist(paths) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/puppet-syntax/tasks/puppet-syntax.rb', line 7

def filelist(paths)
  excludes = PuppetSyntax.exclude_paths
  excludes.push('pkg/**/*')
  files = FileList[paths]
  files.reject! { |f| File.directory?(f) }
  files.exclude(*excludes)
end

#filelist_hiera_yamlObject



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

def filelist_hiera_yaml
  filelist(PuppetSyntax.hieradata_paths)
end

#filelist_manifestsObject



15
16
17
# File 'lib/puppet-syntax/tasks/puppet-syntax.rb', line 15

def filelist_manifests
  filelist(PuppetSyntax.manifests_paths)
end

#filelist_templatesObject



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

def filelist_templates
  filelist(PuppetSyntax.templates_paths)
end