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(options, 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
Generated on Sunday, August 09 2009 at 01:43:07 PM by YARD 0.2.3.2 (ruby-1.8.7).