Sha256: 5bd7a59f4029e247fe954d1255e28a36a14cbce720ee9a6aeadee7ff1a5f2840

Contents?: true

Size: 1.8 KB

Versions: 13

Compression:

Stored size: 1.8 KB

Contents

require 'pdk'
require 'pdk/util'
require 'pdk/cli/exec'
require 'pdk/validate/base_validator'

module PDK
  module Validate
    class PuppetLint < BaseValidator
      def self.name
        'puppet-lint'
      end

      def self.cmd
        'puppet-lint'
      end

      def self.pattern
        '**/*.pp'
      end

      def self.spinner_text(_targets = nil)
        _('Checking Puppet manifest style (%{pattern}).') % { pattern: pattern }
      end

      def self.parse_options(options, targets)
        cmd_options = ['--json', '--relative']

        cmd_options << '--fix' if options[:auto_correct]

        cmd_options.concat(targets)
      end

      def self.parse_output(report, result, targets)
        begin
          json_data = JSON.parse(result[:stdout]).flatten
        rescue JSON::ParserError
          raise PDK::Validate::ParseOutputError, result[:stdout]
        end

        # puppet-lint does not include files without problems in its JSON
        # output, so we need to go through the list of targets and add passing
        # events to the report for any target not listed in the JSON output.
        targets.reject { |target| json_data.any? { |j| j['path'] == target } }.each do |target|
          report.add_event(
            file:     target,
            source:   name,
            severity: 'ok',
            state:    :passed,
          )
        end

        json_data.each do |offense|
          report.add_event(
            file:     offense['path'],
            source:   name,
            line:     offense['line'],
            column:   offense['column'],
            message:  offense['message'],
            test:     offense['check'],
            severity: (offense['kind'] == 'fixed') ? 'corrected' : offense['kind'],
            state:    :failure,
          )
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
pdk-1.13.0 lib/pdk/validate/puppet/puppet_lint.rb
pdk-1.12.0 lib/pdk/validate/puppet/puppet_lint.rb
pdk-1.11.1 lib/pdk/validate/puppet/puppet_lint.rb
pdk-1.11.0 lib/pdk/validate/puppet/puppet_lint.rb
pdk-1.10.0 lib/pdk/validate/puppet/puppet_lint.rb
pdk-akerl-1.9.1.1 lib/pdk/validate/puppet/puppet_lint.rb
pdk-1.9.1 lib/pdk/validate/puppet/puppet_lint.rb
pdk-1.9.0 lib/pdk/validate/puppet/puppet_lint.rb
pdk-akerl-1.8.0.1 lib/pdk/validate/puppet/puppet_lint.rb
pdk-1.8.0 lib/pdk/validate/puppet/puppet_lint.rb
pdk-1.7.1 lib/pdk/validate/puppet/puppet_lint.rb
pdk-1.7.0 lib/pdk/validate/puppet/puppet_lint.rb
pdk-1.6.1 lib/pdk/validate/puppet/puppet_lint.rb