Class: PluginRegistry::Plugin

Inherits:
Object
  • Object
show all
Defined in:
lib/inspec/plugin/v1/registry.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#parentObject

Returns the value of attribute parent.



88
89
90
# File 'lib/inspec/plugin/v1/registry.rb', line 88

def parent
  @parent
end

#targetObject (readonly)

Returns the value of attribute target.



87
88
89
# File 'lib/inspec/plugin/v1/registry.rb', line 87

def target
  @target
end

Class Method Details

.name(name) ⇒ nil

Register a new plugin by name

Parameters:

  • the (String)

    unique name of this plugin

Returns:

  • (nil)

    disregard



45
46
47
48
49
50
# File 'lib/inspec/plugin/v1/registry.rb', line 45

def self.name(name)
  raise "Trying to register #{self} with name == nil" if name.nil?

  @name = name
  plugin_registry.registry[name] = self
end

.plugin_registryPluginRegistry

Retrieve the plugin registry associated with this plugin

Returns:



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

def self.plugin_registry
  raise "Plugin #{self} does not implement `self.plugin_registry()`. This method is required"
end

.priority(x = nil) ⇒ Numeric

This plugin’s priority. Set it by providing the priority as an argument. Higher numbers ensure that the plugin is called early to check if a target belongs to it. When called without an argument, it retrieves this plugin’s priority. Defaults to 0.

Parameters:

  • Priority (Numeric)

    as a number. Will only be set if != nil

Returns:

  • (Numeric)

    This plugin’s priority



59
60
61
62
# File 'lib/inspec/plugin/v1/registry.rb', line 59

def self.priority(x = nil)
  @priority = x unless x.nil?
  @priority || 0
end

.resolve(_target) ⇒ Plugin

Try to resolve the target. If this plugin cannot handle it, the result will be nil. If, however, the plugin can resolve it, the resulting object will be an instance of this plugin. This means, that the interface that this base class provides, is the basis for the returned type.

Parameters:

  • target (String)

    to try to resolve

Returns:

  • (Plugin)

    instance if it can be resolved, nil otherwise



71
72
73
# File 'lib/inspec/plugin/v1/registry.rb', line 71

def self.resolve(_target)
  raise "Plugin #{self} does not implement `self.resolve(target)`. This method is required"
end

.resolve_next(target, parent) ⇒ Plugin

When a plugin’s resolve doesn’t lead to the final state, it can use this method to hand it back for another resolver to handle.

Parameters:

  • the (Any)

    current target that needs resolving

  • an (Plugin)

    instance of the calling resolver

Returns:

  • (Plugin)

    instance if it can be resolved, nil otherwise



81
82
83
84
85
# File 'lib/inspec/plugin/v1/registry.rb', line 81

def self.resolve_next(target, parent)
  res = plugin_registry.resolve(target)
  res.parent = parent
  res
end