Sha256: 7fb6637ca38cc14621d182f3b365ca0b529cd117f2b380d4afe06c8a8de65e43

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

PuppetLint.new_check(:file_ensure) do
  def check
    resource_indexes.each do |resource|
      next unless resource[:type].value == 'file'

      attr = resource[:tokens].select do |t|
        t.type == :NAME &&
          t.value == 'ensure' &&
          t.next_code_token.type == :FARROW
      end
      next if attr.empty?

      val_token = attr[0].next_code_token.next_code_token
      next unless val_token.value == 'present'
      next unless %i[NAME STRING SSTRING].include? val_token.type

      notify :warning, {
        message: 'ensure set to present on file resource',
        line: val_token.line,
        column: val_token.column,
        token: val_token,
        resource: resource,
      }
    end
  end

  def fix(problem)
    target_attr = problem[:resource][:tokens].select do |t|
      t.type == :NAME &&
        t.value == 'target' &&
        t.next_code_token.type == :FARROW
    end
    problem[:token].value = if target_attr.empty?
                              'file'
                            else
                              'link'
                            end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
puppet-lint-file_ensure-check-2.0.0 lib/puppet-lint/plugins/check_file_ensure.rb