File: puppet-syntax.rb

package info (click to toggle)
ruby-puppet-syntax 4.1.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 312 kB
  • sloc: ruby: 672; makefile: 6
file content (84 lines) | stat: -rw-r--r-- 2,368 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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
79
80
81
82
83
84
require 'puppet-syntax'
require 'rake'
require 'rake/tasklib'

module PuppetSyntax
  class RakeTask < ::Rake::TaskLib
    def filelist(paths)
      excludes = PuppetSyntax.exclude_paths
      excludes.push('pkg/**/*')
      excludes.push('vendor/**/*')
      files = FileList[paths]
      files.reject! { |f| File.directory?(f) }
      files.exclude(*excludes)
    end

    def filelist_manifests
      filelist(PuppetSyntax.manifests_paths)
    end

    def filelist_templates
      filelist(PuppetSyntax.templates_paths)
    end

    def filelist_hiera_yaml
      filelist(PuppetSyntax.hieradata_paths)
    end

    def initialize(*_args)
      desc 'Syntax check for Puppet manifests, templates and Hiera'
      task syntax: [
        'syntax:manifests',
        'syntax:templates',
        'syntax:hiera',
      ]

      namespace :syntax do
        desc 'Syntax check Puppet manifests'
        task :manifests do |t|
          warn "---> #{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|
          warn "---> #{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?
            warn 'ERRORS:'
            warn 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|
            warn "---> #{t.name}"
            warn "#{t.name} was called, but PuppetSyntax.check_hiera_keys is false. hiera syntax won't be checked" unless PuppetSyntax.check_hiera_keys
            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
  end
end

PuppetSyntax::RakeTask.new