class Inspec::Resources::OsEnv

Public Class Methods

new(env = nil, target = nil) click to toggle source
# File lib/inspec/resources/os_env.rb, line 24
def initialize(env = nil, target = nil)
  @osenv = env
  @target = unless target.nil?
              if target.casecmp("system") == 0
                "Machine"
              else
                "User"
              end
            end
end

Public Instance Methods

content() click to toggle source
# File lib/inspec/resources/os_env.rb, line 44
def content
  return @content if defined?(@content)

  @content = value_for(@osenv, @target) unless @osenv.nil?
end
split() click to toggle source
# File lib/inspec/resources/os_env.rb, line 35
def split
  # we can't take advantage of `File::PATH_SEPARATOR` as code is
  # evaluated on the host machine
  path_separator = inspec.os.windows? ? ";" : ":"
  # -1 is required to catch cases like dir1::dir2:
  # where we have a trailing :
  content.nil? ? [] : content.split(path_separator, -1)
end
to_s() click to toggle source
# File lib/inspec/resources/os_env.rb, line 50
def to_s
  if @osenv.nil?
    "Environment variables"
  else
    "Environment variable #{@osenv}"
  end
end

Private Instance Methods

value_for(env, target = nil) click to toggle source
# File lib/inspec/resources/os_env.rb, line 60
def value_for(env, target = nil)
  command = if inspec.os.windows?
              if target.nil?
                "${Env:#{env}}"
              else
                "[System.Environment]::GetEnvironmentVariable('#{env}', [System.EnvironmentVariableTarget]::#{target})"
              end
            else
              "env"
            end

  out = inspec.command(command)

  unless out.exit_status == 0
    skip_resource "Can't read environment variables on #{inspec.os.name}. "\
      "Tried `#{command}` which returned #{out.exit_status}"
  end

  if inspec.os.windows?
    out.stdout.strip
  else
    params = SimpleConfig.new(out.stdout).params
    params[env]
  end
end