Sha256: 0c5c1f46020b4984e29bb25e9ffd4754776ee703ca16c19570f16812d7d8f8e7

Contents?: true

Size: 1.7 KB

Versions: 4

Compression:

Stored size: 1.7 KB

Contents

require 'clamp'
require 'logstash/namespace'
require 'logstash/pluginmanager/util'
require 'logstash/pluginmanager/command'
require "logstash/bundler"
require 'rubygems/spec_fetcher'

class LogStash::PluginManager::List < LogStash::PluginManager::Command

  parameter "[PLUGIN]", "Part of plugin name to search for, leave empty for all plugins"

  option "--installed", :flag, "List only explicitly installed plugins using bin/plugin install ...", :default => false
  option "--verbose", :flag, "Also show plugin version number", :default => false
  option "--group", "NAME", "Filter plugins per group: input, output, filter or codec" do |arg|
    raise(ArgumentError, "should be one of: input, output, filter or codec") unless ['input', 'output', 'filter', 'codec'].include?(arg)
    arg
  end

  def execute
    LogStash::Bundler.setup!

    signal_error("No plugins found") if filtered_specs.empty?

    filtered_specs.sort_by{|spec| spec.name}.each do |spec|
      line = "#{spec.name}"
      line += " (#{spec.version})" if verbose?
      puts(line)
    end
  end

  def filtered_specs
    @filtered_specs ||= begin
                          # start with all locally installed plugin gems regardless of the Gemfile content
                          specs = LogStash::PluginManager.find_plugins_gem_specs

                          # apply filters
                          specs = specs.select{|spec| gemfile.find(spec.name)} if installed?
                          specs = specs.select{|spec| spec.name =~ /#{plugin}/i} if plugin
                          specs = specs.select{|spec| spec.metadata['logstash_group'] == group} if group

                          specs
                        end
  end
end # class Logstash::PluginManager

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
logstash-core-1.5.0.rc3-java lib/logstash/pluginmanager/list.rb
logstash-core-1.5.0.rc3.snapshot6-java lib/logstash/pluginmanager/list.rb
logstash-core-1.5.0.rc3.snapshot5-java lib/logstash/pluginmanager/list.rb
logstash-core-1.5.0.rc3.snapshot4-java lib/logstash/pluginmanager/list.rb