def subcommand(name, description, subcommand_class = self, &block)
unless has_subcommands?
@subcommand_parameter = if @default_subcommand
parameter "[SUBCOMMAND]", "subcommand", :attribute_name => :subcommand_name, :default => @default_subcommand
else
parameter "SUBCOMMAND", "subcommand", :attribute_name => :subcommand_name, :required => false
end
remove_method :default_subcommand_name
parameter "[ARG] ...", "subcommand arguments", :attribute_name => :subcommand_arguments
end
if block
subcommand_class = Class.new(subcommand_class, &block)
end
recognised_subcommands << Subcommand::Definition.new(name, description, subcommand_class)
end