Class: Nanoc3::CLI::Commands::Info
- Cri::Command
- Nanoc3::CLI::Commands::Info
Constants
- PLUGIN_CLASS_ORDER
- [ Nanoc3::Filter, Nanoc3::Extra::VCS, Nanoc3::DataSource ]
- PLUGIN_CLASSES
- { Nanoc3::Filter => 'Filters', Nanoc3::DataSource => 'Data Sources', Nanoc3::Extra::VCS => 'VCSes' }
Public Visibility
Public Instance Method Summary
| #aliases | |
|---|---|
| #long_desc | |
| #name | |
| #option_definitions | |
| #run(options, arguments) | |
| #short_desc | |
| #usage |
Public Instance Method Details
aliases
public
aliases
[View source]
11 12 13 |
# File 'lib/nanoc3/cli/commands/info.rb', line 11 def aliases [] end |
long_desc
public
long_desc
[View source]
19 20 21 22 23 |
# File 'lib/nanoc3/cli/commands/info.rb', line 19 def long_desc 'Show a list of available plugins, including filters, data sources ' + 'and VCSes. If the current directory contains a nanoc web site, ' + 'the plugins defined in this site will be shown as well.' end |
name
public
name
[View source]
7 8 9 |
# File 'lib/nanoc3/cli/commands/info.rb', line 7 def name 'info' end |
option_definitions
public
option_definitions
[View source]
29 30 31 |
# File 'lib/nanoc3/cli/commands/info.rb', line 29 def option_definitions [] end |
run
public
run(options, arguments)
[View source]
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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/nanoc3/cli/commands/info.rb', line 33 def run(, arguments) # Check arguments if arguments.size != 0 $stderr.puts "usage: #{usage}" exit 1 end # Get list of plugins (before and after) plugins_before = Nanoc3::Plugin.all @base.site @base.site.load_data if @base.site plugins_after = Nanoc3::Plugin.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.inject 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 sprintf( " %-#{max_identifiers_length}s (%s)", plugin[:identifiers].join(', '), plugin[:class].to_s.sub(/^::/, '') ) end end puts end end |
short_desc
public
short_desc
[View source]
15 16 17 |
# File 'lib/nanoc3/cli/commands/info.rb', line 15 def short_desc 'show info about available plugins' end |
usage
public
usage
[View source]
25 26 27 |
# File 'lib/nanoc3/cli/commands/info.rb', line 25 def usage "nanoc3 info" end |