class Inspec::Resources::Rpm

RHEL family

def info(package_name)

def info(package_name)
  cmd = inspec.command("rpm -qia #{package_name}")
  # CentOS does not return an error code if the package is not installed,
  # therefore we need to check for emptyness
  return nil if cmd.exit_status.to_i != 0 || cmd.stdout.chomp.empty?
  params = SimpleConfig.new(
    cmd.stdout.chomp,
    assignment_re: /^\s*([^:]*?)\s*:\s*(.*?)\s*$/,
    multiple_values: false,
  ).params
  # On some (all?) systems, the linebreak before the vendor line is missing
  if params['Version'] =~ /\s*Vendor:/
    v = params['Version'].split(' ')[0]
  else
    v = params['Version']
  end
  # On some (all?) systems, the linebreak before the build line is missing
  if params['Release'] =~ /\s*Build Date:/
    r = params['Release'].split(' ')[0]
  else
    r = params['Release']
  end
  {
    name: params['Name'],
    installed: true,
    version: "#{v}-#{r}",
    type: 'rpm',
  }
end