lib/logstash-docket/aliased_plugin.rb (42 lines of code) (raw):
# encoding: utf-8
require_relative 'plugin'
module LogstashDocket
class AliasPlugin
SUPPORTED_TYPES = Set.new(%w(input output filter codec).map(&:freeze)).freeze
include Plugin
attr_reader :canonical_plugin, :doc_headers
def initialize(canonical_plugin:, alias_name:, doc_headers:)
fail(ArgumentError) unless canonical_plugin.kind_of?(ArtifactPlugin)
super(type: canonical_plugin.type, name: alias_name)
fail("#{canonical_plugin.desc} plugin type #{type} not supported as an alias plugin") unless SUPPORTED_TYPES.include?(type)
@canonical_plugin = canonical_plugin
@doc_headers = doc_headers
end
##
# @see Plugin#version
def version
@canonical_plugin.version
end
def documentation
content = @canonical_plugin.documentation
@doc_headers.reduce(content) do |memo, header|
memo.gsub(header.fetch("replace"), header.fetch("with"))
end
end
##
# @see Plugin#release_date
def release_date
@canonical_plugin.release_date
end
##
# @see Plugin#changelog_url
def changelog_url
@canonical_plugin.changelog_url
end
##
# @see Plugin#tag
def tag
@canonical_plugin.tag
end
##
# @see Plugin#desc
def desc
@desc ||= "[plugin:#{canonical_name}@#{tag}]"
end
##
# @see Plugin#==
def ==(other)
return false unless super
return false unless other.kind_of?(AliasPlugin)
return false unless self.name == other.name
return true
end
end
end