class Inspec::Resources::CranPackage
Public Class Methods
new(package_name)
click to toggle source
# File lib/inspec/resources/cran.rb, line 20 def initialize(package_name) @package_name = package_name @r_cmd = "Rscript" # this resource is not supported on Windows return skip_resource "The `cran` resource is not supported on your OS yet." if inspec.os.windows? return skip_resource "Rscript not found" unless inspec.command(@r_cmd).exist? end
Public Instance Methods
info()
click to toggle source
# File lib/inspec/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 == 0 # 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
installed?()
click to toggle source
# File lib/inspec/resources/cran.rb, line 52 def installed? info[:installed] == true end
to_s()
click to toggle source
# File lib/inspec/resources/cran.rb, line 60 def to_s "R Module #{@package_name}" end
version()
click to toggle source
# File lib/inspec/resources/cran.rb, line 56 def version info[:version] end