Method: Inspec::Resources::CranPackage#info

Defined in:
lib/resources/cran.rb

#infoObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/resources/cran.rb', line 29

def info
  return @info if defined?(@info)

  @info = {}
  @info[:type] = 'cran'
  @info[:name] = @package_name
  cmd = inspec.command("#{@r_cmd} -e 'packageVersion(\"#{@package_name}\")'")
  return @info unless cmd.exit_status.zero?

  # Extract package version from Rscript output
  # Output includes unicode punctuation (backticks) characters like so:
  # [1] '0.5.1'
  #
  # So make sure command output is converted to unicode, as it returns ASCII-8BIT by default
  utf8_stdout = cmd.stdout.chomp.force_encoding(Encoding::UTF_8)
  params = /^\[\d+\]\s+(?:\p{Initial_Punctuation})(.+)(?:\p{Final_Punctuation})$/.match(utf8_stdout)
  @info[:installed] = !params.nil?
  return @info unless @info[:installed]

  @info[:version] = params[1]
  @info
end