Class: Bolt::Plugin

Inherits:
Object
  • Object
show all
Defined in:
lib/bolt/plugin.rb,
lib/bolt/plugin/aws.rb,
lib/bolt/plugin/task.rb,
lib/bolt/plugin/pkcs7.rb,
lib/bolt/plugin/vault.rb,
lib/bolt/plugin/prompt.rb,
lib/bolt/plugin/puppetdb.rb,
lib/bolt/plugin/terraform.rb

Defined Under Namespace

Classes: Aws, Pkcs7, PluginError, Prompt, Puppetdb, Task, Terraform, Vault

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, analytics) ⇒ Plugin

Returns a new instance of Plugin.



46
47
48
49
50
# File 'lib/bolt/plugin.rb', line 46

def initialize(config, analytics)
  @config = config
  @analytics = analytics
  @plugins = {}
end

Class Method Details

.setup(config, pdb_client, analytics) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
# File 'lib/bolt/plugin.rb', line 34

def self.setup(config, pdb_client, analytics)
  plugins = new(config, analytics)
  plugins.add_plugin(Bolt::Plugin::Puppetdb.new(pdb_client))
  plugins.add_plugin(Bolt::Plugin::Terraform.new)
  plugins.add_plugin(Bolt::Plugin::Prompt.new)
  plugins.add_plugin(Bolt::Plugin::Pkcs7.new(config.boltdir.path, config.plugins['pkcs7'] || {}))
  plugins.add_plugin(Bolt::Plugin::Task.new(config))
  plugins.add_plugin(Bolt::Plugin::Aws::EC2.new(config.plugins['aws'] || {}))
  plugins.add_plugin(Bolt::Plugin::Vault.new(config.plugins['vault'] || {}))
  plugins
end

Instance Method Details

#add_plugin(plugin) ⇒ Object



52
53
54
# File 'lib/bolt/plugin.rb', line 52

def add_plugin(plugin)
  @plugins[plugin.name] = plugin
end

#by_name(plugin_name) ⇒ Object



65
66
67
# File 'lib/bolt/plugin.rb', line 65

def by_name(plugin_name)
  @plugins[plugin_name]
end

#get_hook(plugin_name, hook) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/bolt/plugin.rb', line 56

def get_hook(plugin_name, hook)
  plugin = by_name(plugin_name)
  raise PluginError::Unknown, plugin_name unless plugin
  raise PluginError::UnsupportedHook.new(plugin_name, hook) unless plugin.respond_to?(hook)
  @analytics.report_bundled_content("Plugin #{hook}", plugin_name)

  plugin.method(hook)
end