class PuppetSyntax::RakeTask

Public Class Methods

new(*_args) click to toggle source
# File lib/puppet-syntax/tasks/puppet-syntax.rb, line 28
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

Public Instance Methods

filelist(paths) click to toggle source
# File lib/puppet-syntax/tasks/puppet-syntax.rb, line 7
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
filelist_hiera_yaml() click to toggle source
# File lib/puppet-syntax/tasks/puppet-syntax.rb, line 24
def filelist_hiera_yaml
  filelist(PuppetSyntax.hieradata_paths)
end
filelist_manifests() click to toggle source
# File lib/puppet-syntax/tasks/puppet-syntax.rb, line 16
def filelist_manifests
  filelist(PuppetSyntax.manifests_paths)
end
filelist_templates() click to toggle source
# File lib/puppet-syntax/tasks/puppet-syntax.rb, line 20
def filelist_templates
  filelist(PuppetSyntax.templates_paths)
end