123456789_123456789_123456789_123456789_123456789_

Class: YARD::CLI::CommandParser

Relationships & Source Files
Inherits: Object
Defined in: lib/yard/cli/command_parser.rb

Overview

This class parses a command name out of the yard ::YARD::CLI command and calls that command in the form:

$ yard command_name [options]

If no command or arguments are specified, or if the arguments immediately begin with a --opt (not --help), the .default_command will be used (which itself defaults to :doc).

Adding a Command

To add a custom command via plugin, create a mapping in .commands from the Symbolic command name to the Command class that implements the command. To implement a command, see the documentation for the Command class.

Class Attribute Summary

Class Method Summary

Instance Method Summary

Constructor Details

.newCommandParser

[ GitHub ]

  
# File 'lib/yard/cli/command_parser.rb', line 56

def initialize
  log.show_backtraces = false
end

Class Attribute Details

.commandsHash{Symbol => Command} (rw)

Returns:

  • (Hash{Symbol => Command})

    the mapping of command names to command classes to parse the user command.

[ GitHub ]

  
# File 'lib/yard/cli/command_parser.rb', line 27

attr_accessor :commands

.default_commandSymbol (rw)

Returns:

  • (Symbol)

    the default command name to use when no options are specified or

[ GitHub ]

  
# File 'lib/yard/cli/command_parser.rb', line 31

attr_accessor :default_command

Class Method Details

.run(*args) ⇒ void

This method returns an undefined value.

Convenience method to create a new CommandParser and call #run

[ GitHub ]

  
# File 'lib/yard/cli/command_parser.rb', line 54

def self.run(*args) new.run(*args) end

Instance Method Details

#commands (private)

[ GitHub ]

  
# File 'lib/yard/cli/command_parser.rb', line 80

def commands; self.class.commands end

#list_commands (private)

[ GitHub ]

  
# File 'lib/yard/cli/command_parser.rb', line 82

def list_commands
  log.puts "Usage: yard <command> [options]"
  log.puts
  log.puts "Commands:"
  commands.keys.sort_by(&:to_s).each do |command_name|
    command = commands[command_name].new
    log.puts "%-8s %s" % [command_name, command.description]
  end
end

#run(*args) ⇒ void

This method returns an undefined value.

Runs the Command object matching the command name of the first argument.

[ GitHub ]

  
# File 'lib/yard/cli/command_parser.rb', line 63

def run(*args)
  unless args == ['--help']
    if args.empty? || args.first =~ /^-/
      command_name = self.class.default_command
    else
      command_name = args.first.to_sym
      args.shift
    end
    if commands.key?(command_name)
      return commands[command_name].run(*args)
    end
  end
  list_commands
end