Sha256: 7441378c19c0a9ae5b37b8606057bc3086a302100b23044ed88a49b16209e23e

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

require 'bolt/plugin/puppetdb'
require 'bolt/plugin/terraform'
require 'bolt/plugin/pkcs7'
require 'bolt/plugin/prompt'
require 'bolt/plugin/task'

module Bolt
  class Plugin
    class PluginError < Bolt::Error
      def initialize(msg, plugin, hook)
        mess = "Error executing plugin: #{plugin.name} from #{hook}: #{msg}"
        super(mess, 'bolt/plugin-error')
      end
    end

    def self.setup(config, pdb_client)
      plugins = new(config)
      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
    end

    def initialize(_config)
      @plugins = {}
    end

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

    def for_hook(hook)
      @plugins.filter { |_n, plug| plug.hooks.include? hook }
    end

    def by_name(plugin_name)
      @plugins[plugin_name]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bolt-1.26.0 lib/bolt/plugin.rb