class Inspec::Cache

Inspec::Cache manages an on-disk cache of inspec profiles. The cache can contain:

- .tar.gz profile archives
- .zip profile archives
- unpacked profiles

Cache entries names include a hash of their source to prevent conflicts between depenedencies with the same name from different sources.

Attributes

path[R]

Public Class Methods

new(path = nil) click to toggle source
# File lib/inspec/dependencies/cache.rb, line 19
def initialize(path = nil)
  @path = path || File.join(Inspec.config_dir, "cache")
  FileUtils.mkdir_p(@path) unless File.directory?(@path)
rescue Errno::EACCES
  # ignore
end

Public Instance Methods

archive_entry_for(key) click to toggle source
# File lib/inspec/dependencies/cache.rb, line 35
def archive_entry_for(key)
  path = base_path_for(key)
  if File.exist?("#{path}.tar.gz")
    "#{path}.tar.gz"
  elsif File.exist?("#{path}.zip")
    "#{path}.zip"
  end
end
base_path_for(cache_key) click to toggle source

Return the path to given profile in the cache.

The `source_url` parameter should be a URI-like string that fully specifies the source of the exact version we want to pull down.

@param [String] name @param [String] source_url @return [String]

# File lib/inspec/dependencies/cache.rb, line 70
def base_path_for(cache_key)
  File.join(@path, cache_key)
end
exists?(key) click to toggle source

For a given name and source_url, return true if the profile exists in the Cache.

@param [String] name @param [String] source_url @return [Boolean]

# File lib/inspec/dependencies/cache.rb, line 52
def exists?(key)
  return false if key.nil? || key.empty?

  path = base_path_for(key)
  File.directory?(path) || File.exist?("#{path}.tar.gz") || File.exist?("#{path}.zip")
end
prefered_entry_for(key) click to toggle source
# File lib/inspec/dependencies/cache.rb, line 26
def prefered_entry_for(key)
  path = base_path_for(key)
  if File.directory?(path)
    path
  else
    archive_entry_for(key)
  end
end