lib/yard/cli/command_parser.rb in yard-0.6.8 vs lib/yard/cli/command_parser.rb in yard-0.7.0
- old
+ new
@@ -1,62 +1,63 @@
module YARD
module CLI
# This class parses a command name out of the +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
+ # 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
+ #
+ # 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.
- #
+ #
# @see Command
# @see commands
# @see default_command
class CommandParser
class << self
# @return [Hash{Symbol => Command}] the mapping of command names to
# command classes to parse the user command.
attr_accessor :commands
-
+
# @return [Symbol] the default command name to use when no options
- # are specified or
+ # are specified or
attr_accessor :default_command
end
-
+
self.commands = SymbolHash[
:config => Config,
:diff => Diff,
:doc => Yardoc,
:gems => Gems,
:graph => Graph,
:help => Help,
+ :list => List,
:ri => YRI,
:server => Server,
:stats => Stats
]
-
+
self.default_command = :doc
-
+
# Convenience method to create a new CommandParser and call {#run}
# @return (see #run)
def self.run(*args) new.run(*args) end
-
+
def initialize
log.show_backtraces = false
end
-
+
# Runs the {Command} object matching the command name of the first
# argument.
- # @return [void]
+ # @return [void]
def run(*args)
unless args == ['--help']
if args.size == 0 || args.first =~ /^-/
command_name = self.class.default_command
else
@@ -67,21 +68,21 @@
return commands[command_name].run(*args)
end
end
list_commands
end
-
+
private
def commands; self.class.commands end
-
+
def list_commands
puts "Usage: yard <command> [options]"
puts
puts "Commands:"
commands.keys.sort_by {|k| k.to_s }.each do |command_name|
command = commands[command_name].new
- puts "%-8s %s" % [command_name, command.description]
+ puts "%-8s %s" % [command_name, command.description]
end
end
end
end
end
\ No newline at end of file