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.



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

def target
  @target
end

Class Method Details

.plugin_registryObject



19
20
21
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 19

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.



34
35
36
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 34

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.



64
65
66
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 64

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



47
48
49
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 47

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.



77
78
79
80
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 77

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.



57
58
59
# File 'lib/inspec/plugin/v1/plugin_types/fetcher.rb', line 57

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

#writable?Boolean

Returns:

  • (Boolean)


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

def writable?
  false
end