Class: Inspec::Plugins::Fetcher

Inherits:
PluginRegistry::Plugin show all
Defined in:
lib/inspec/plugin/v1/plugin_types/fetcher.rb

Overview

An Inspec::Plugins::Fetcher is responsible for fetching a remote source to a local directory or file provided by the user.

In general, there are two kinds of fetchers. (1) Fetchers that implement this entire API (see the Git or Url fetchers for examples), and (2) fetchers that only implement self.resolve and then call the resolve_next method with a modified target hash. Fetchers in (2) do not need to implement the functions in this class because the caller will never actually get an instance of those fetchers.

Instance Attribute Summary collapse

Attributes inherited from PluginRegistry::Plugin

#parent

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from PluginRegistry::Plugin

name, priority, resolve, resolve_next

Instance Attribute Details

#targetObject

Returns the value of attribute target.



26
27
28
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 26

def target
  @target
end

Class Method Details

.plugin_registryObject



22
23
24
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 22

def self.plugin_registry
  Inspec::Fetcher
end

Instance Method Details

#archive_pathObject

The path to the archive on disk. This can be passed to a FileProvider to get access to the files in the fetched profile.



37
38
39
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 37

def archive_path
  raise "Fetcher #{self} does not implement `archive_path()`. This is required."
end

#cache_keyObject

The unique key based on the content of the remote archive.



67
68
69
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 67

def cache_key
  raise "Fetcher #{self} does not implement `cache_key()`. This is required for terminal fetchers."
end

#fetch(_path) ⇒ Object

Fetches the remote source to a local source, using the provided path as a partial filename. That is, if you pass /foo/bar/baz, the fetcher can create:

/foo/bar/baz/: A profile directory, or /foo/bar/baz.tar.gz: A profile tarball, or /foo/bar/baz.zip



50
51
52
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 50

def fetch(_path)
  raise "Fetcher #{self} does not implement `fetch()`. This is required."
end

#relative_targetObject

relative_target is provided to keep compatibility with 3rd party plugins.

Deprecated: This function may be removed in future versions of Inspec, don’t depend on it in new plugins.



80
81
82
83
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 80

def relative_target
  file_provider = Inspec::FileProvider.for_path(archive_path)
  file_provider.relative_provider
end

#resolved_sourceObject

The full specification of the remote source, with any ambigious references provided by the user resolved to an exact reference where possible. For example, in the Git provide, a tag will be resolved to an exact revision.



60
61
62
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 60

def resolved_source
  raise "Fetcher #{self} does not implement `resolved_source()`. This is required for terminal fetchers."
end

#writable?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 28

def writable?
  false
end