Object
Shortcuts for help.
Thor methods that should not be overwritten by the user.
Extend check unknown options to accept a hash of conditions.
options<Hash>: A hash containing :only and/or :except keys
# File lib/thor.rb, line 212 def check_unknown_options!(options={}) @check_unknown_options ||= Hash.new options.each do |key, value| if value @check_unknown_options[key] = Array(value) else @check_unknown_options.delete(key) end end @check_unknown_options end
Sets the default task when thor is executed without an explicit task to be called.
meth<Symbol> |
name of the defaut task |
# File lib/thor.rb, line 10 def default_task(meth=nil) case meth when :none @default_task = 'help' when nil @default_task ||= from_superclass(:default_task, 'help') else @default_task = meth.to_s end end
Defines the usage and the description of the next task.
usage<String> description<String> options<String>
# File lib/thor.rb, line 45 def desc(usage, description, options={}) if options[:for] task = find_and_refresh_task(options[:for]) task.usage = usage if usage task.description = description if description else @usage, @desc, @hide = usage, description, options[:hide] || false end end
Prints help information for this class.
shell<Thor::Shell>
# File lib/thor.rb, line 174 def help(shell, subcommand = false) list = printable_tasks(true, subcommand) Thor::Util.thor_classes_in(self).each do |klass| list += klass.printable_tasks(false) end list.sort!{ |a,b| a[0] <=> b[0] } shell.say "Tasks:" shell.print_table(list, :ident => 2, :truncate => true) shell.say class_options_help(shell) end
Defines the long description of the next task.
long description<String>
# File lib/thor.rb, line 60 def long_desc(long_description, options={}) if options[:for] task = find_and_refresh_task(options[:for]) task.long_description = long_description if long_description else @long_desc = long_description end end
Maps an input to a task. If you define:
map "-T" => "list"
Running:
thor -T
Will invoke the list task.
Hash[String|Array => Symbol] |
Maps the string or the strings in the array to the given task. |
# File lib/thor.rb, line 82 def map(mappings=nil) @map ||= from_superclass(:map, {}) if mappings mappings.each do |key, value| if key.respond_to?(:each) key.each {|subkey| @map[subkey] = value} else @map[key] = value end end end @map end
Adds an option to the set of method options. If :for is given as option, it allows you to change the options from a previous defined task.
def previous_task # magic end method_option :foo => :bar, :for => :previous_task def next_task # magic end
name<Symbol> |
The name of the argument. |
options<Hash> |
Described below. |
:desc - Description for the argument. :required - If the argument is required or not. :default - Default value for this argument. It cannot be required and have default values. :aliases - Aliases for this option. :type - The type of the argument, can be :string, :hash, :array, :numeric or :boolean. :banner - String to show on usage notes.
# File lib/thor.rb, line 136 def method_option(name, options={}) scope = if options[:for] find_and_refresh_task(options[:for]).options else method_options end build_option(name, options, scope) end
Declares the options for the next task to be declared.
Hash[Symbol => Object] |
The hash key is the name of the option and the value |
is the type of the option. Can be :string, :array, :hash, :boolean, :numeric or :required (string). If you give a value, the type of the value is used.
# File lib/thor.rb, line 105 def method_options(options=nil) @method_options ||= {} build_options(options, @method_options) if options @method_options end
Returns tasks ready to be printed.
# File lib/thor.rb, line 188 def printable_tasks(all = true, subcommand = false) (all ? all_tasks : tasks).map do |_, task| next if task.hidden? item = [] item << banner(task, false, subcommand) item << (task.description ? "# #{task.description.gsub(/\s+/m,' ')}" : "") item end.compact end
Registers another Thor subclass as a command.
klass<Class> |
Thor subclass to register |
command<String> |
Subcommand name to use |
usage<String> |
Short usage for the subcommand |
description<String> |
Description for the subcommand |
# File lib/thor.rb, line 28 def register(klass, subcommand_name, usage, description, options={}) if klass <= Thor::Group desc usage, description, options define_method(subcommand_name) { invoke klass } else desc usage, description, options subcommand subcommand_name, klass end end
# File lib/thor.rb, line 202 def subcommand(subcommand, subcommand_class) self.subcommands << subcommand.to_s subcommand_class.subcommand_help subcommand define_method(subcommand) { |*args| invoke subcommand_class, args } end
# File lib/thor.rb, line 198 def subcommands @subcommands ||= from_superclass(:subcommands, []) end
Prints help information for the given task.
shell<Thor::Shell> task_name<String>
# File lib/thor.rb, line 152 def task_help(shell, task_name) meth = normalize_task_name(task_name) task = all_tasks[meth] handle_no_task_error(meth) unless task shell.say "Usage:" shell.say " #{banner(task)}" shell.say class_options_help(shell, nil => task.options.map { |_, o| o }) if task.long_description shell.say "Description:" shell.print_wrapped(task.long_description, :ident => 2) else shell.say task.description end end
Generated with the Darkfish Rdoc Generator 2.