Class: Nanoc::CLI::Commands::ShowPlugins Private
- Inherits:
-
Nanoc::CLI::CommandRunner
- Object
- Cri::CommandRunner
- Nanoc::CLI::CommandRunner
- Nanoc::CLI::Commands::ShowPlugins
- Defined in:
- lib/nanoc/cli/commands/show-plugins.rb
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Constant Summary collapse
- PLUGIN_CLASS_ORDER =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
[ Nanoc::Filter, Nanoc::DataSource, Nanoc::Extra::Deployer, ].freeze
- PLUGIN_CLASSES =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
{ Nanoc::Filter => 'Filters', Nanoc::DataSource => 'Data Sources', Nanoc::Extra::Deployer => 'Deployers', }.freeze
Instance Method Summary collapse
- #run ⇒ Object private
Methods inherited from Nanoc::CLI::CommandRunner
#call, #debug?, #in_site_dir?, #load_site, #site, #site=
Instance Method Details
#run ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/nanoc/cli/commands/show-plugins.rb', line 11 def run # Check arguments if arguments.any? raise Nanoc::Int::Errors::GenericTrivial, "usage: #{command.usage}" end # Get list of plugins (before and after) plugins_before = Nanoc::Int::PluginRegistry.instance.all site.code_snippets if site plugins_after = Nanoc::Int::PluginRegistry.instance.all # Divide list of plugins into builtin and custom plugins_builtin = plugins_before plugins_custom = plugins_after - plugins_before # Find max identifiers length plugin_with_longest_identifiers = plugins_after.reduce do |longest, current| longest[:identifiers].join(', ').size > current[:identifiers].join(', ').size ? longest : current end max_identifiers_length = plugin_with_longest_identifiers[:identifiers].join(', ').size PLUGIN_CLASS_ORDER.each do |superclass| plugins_with_this_superclass = { builtin: plugins_builtin.select { |p| p[:superclass] == superclass }, custom: plugins_custom.select { |p| p[:superclass] == superclass }, } # Print kind kind = name_for_plugin_class(superclass) puts "#{kind}:" puts # Print plugins organised by subtype [:builtin, :custom].each do |type| # Find relevant plugins relevant_plugins = plugins_with_this_superclass[type] # Print type puts " #{type}:" if relevant_plugins.empty? puts ' (none)' next end # Print plugins relevant_plugins.sort_by { |k| k[:identifiers].join(', ') }.each do |plugin| # Display puts format( " %-#{max_identifiers_length}s (%s)", plugin[:identifiers].join(', '), plugin[:class].to_s.sub(/^::/, ''), ) end end puts end end |