Class: Thor
- Inherits:
- Object
- Includes:
- Thor::Base
- Defined in:
- lib/thor.rb,
lib/thor/base.rb,
lib/thor/util.rb,
lib/thor/task.rb,
lib/thor/shell.rb,
lib/thor/error.rb,
lib/thor/version.rb,
lib/thor/actions.rb,
lib/thor/invocation.rb,
lib/thor/shell/basic.rb,
lib/thor/shell/color.rb,
lib/thor/rake_compat.rb,
lib/thor/parser/option.rb,
lib/thor/parser/options.rb,
lib/thor/parser/argument.rb,
lib/thor/parser/arguments.rb,
lib/thor/actions/directory.rb,
lib/thor/actions/create_file.rb,
lib/thor/core_ext/ordered_hash.rb,
lib/thor/actions/empty_directory.rb,
lib/thor/actions/inject_into_file.rb,
lib/thor/actions/file_manipulation.rb,
lib/thor/core_ext/hash_with_indifferent_access.rb
Constant Summary
- HELP_MAPPINGS = Shortcuts for help.
%w(-h -? --help -D)- THOR_RESERVED_WORDS = Thor methods that should not be overwritten by the user.
%w(invoke shell options behavior root destination_root relative_root action add_file create_file in_root inside run run_ruby_script)- VERSION =
"0.12.1".freeze
Method Summary
- + (Object) default_task(meth = nil) Sets the default task when thor is executed without an explicit task to be called.
- + (Object) desc(usage, description, options = {}) Defines the usage and the description of the next task.
- + (Object) help(shell, meth = nil, options = {}) Prints help information.
- + (Object) map(mappings = nil) Maps an input to a task.
- + (Object) method_option(name, options = {}) Adds an option to the set of class options.
- + (Object) method_options(options = nil) Declares the options for the next task to be declared.
- + (Object) start(given_args = ARGV, config = {}) Parses the task and options from the given args, instantiate the class and invoke the task.
- - (Object) help(task = nil)
Methods included from Thor::Base
included, #initialize, register_klass_file, shell, shell=, subclass_files, subclasses
Constructor Details
This class inherits a constructor from Thor::Base
Constructor Details
This class inherits a constructor from Thor::Base
Method Details
+ (Object) default_task(meth = nil)
Sets the default task when thor is executed without an explicit task to be called.
Parameters
| meth | name of the defaut task |
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/thor.rb', line 12 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 |
+ (Object) desc(usage, description, options = {})
Defines the usage and the description of the next task.
Parameters
usage
29 30 31 32 33 34 35 36 37 |
# File 'lib/thor.rb', line 29 def desc(usage, description, ={}) if [:for] task = find_and_refresh_task([:for]) task.usage = usage if usage task.description = description if description else @usage, @desc = usage, description end end |
+ (Object) help(shell, meth = nil, options = {})
Prints help information. If a task name is given, it shows information only about the specific task.
Parameters
| meth | An optional task name to print usage information about. |
Options
| namespace: | When true, shows the namespace in the output before the usage. |
| skip_inherited: | When true, does not show tasks from superclass. |
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/thor.rb', line 153 def help(shell, meth=nil, ={}) meth, = nil, meth if meth.is_a?(Hash) if meth task = all_tasks[meth] raise UndefinedTaskError, "task '#{meth}' could not be found in namespace '#{self.namespace}'" unless task shell.say "Usage:" shell.say " #{banner(task, options[:namespace], false)}" shell.say (shell, "Class", :Method => task..map { |_, o| o }) shell.say task.description else list = ([:short] ? tasks : all_tasks).map do |_, task| item = [ (task, [:namespace]) ] item << "# #{task.short_description}" if task.short_description item << " " end [:ident] ||= 2 if [:short] shell.print_list(list, :ident => [:ident]) else shell.say "Tasks:" shell.print_list(list, :ident => [:ident]) end Thor::Util.thor_classes_in(self).each do |subclass| namespace = [:namespace] == true || subclass.namespace.gsub(/^#{self.namespace}:/, '') subclass.help(shell, .merge(:short => true, :namespace => namespace)) end (shell, "Class") unless [:short] end end |
+ (Object) map(mappings = nil)
Maps an input to a task. If you define:
map "-T" => "list"
Running:
thor -T
Will invoke the list task.
Parameters
| Hash[String|Array => Symbol]: | Maps the string or the strings in the array to the given task. |
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/thor.rb', line 52 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 |
+ (Object) method_option(name, options = {})
Adds an option to the set of class options. If :for is given as option, it allows you to change the options from a previous defined task.
def previous_task # magic end :foo => :bar, :for => :previous_task def next_task # magic end
Parameters
| name | The name of the argument. |
| options | Described below. |
Options
: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. :group - The group for this options. Use by class options to output options in different levels. :banner - String to show on usage notes.
107 108 109 110 111 112 113 114 115 |
# File 'lib/thor.rb', line 107 def method_option(name, ={}) scope = if [:for] find_and_refresh_task([:for]). else end build_option(name, , scope) end |
+ (Object) method_options(options = nil)
Declares the options for the next task to be declared.
Parameters
| 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.
75 76 77 78 79 |
# File 'lib/thor.rb', line 75 def (=nil) ||= {} (, ) if end |
+ (Object) start(given_args = ARGV, config = {})
Parses the task and options from the given args, instantiate the class and invoke the task. This method is used when the arguments must be parsed from an array. If you are inside Ruby and want to use a Thor class, you can simply initialize it:
script = MyScript.new(args, , config) script.invoke(:task, first_arg, second_arg, third_arg)
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/thor.rb', line 125 def start(given_args=ARGV, config={}) super do meth = normalize_task_name(given_args.shift) task = all_tasks[meth] if task args, opts = Thor::Options.split(given_args) config.merge!(:task_options => task.) else args, opts = given_args, {} end task ||= Thor::Task::Dynamic.new(meth) trailing = args[Range.new(arguments.size, -1)] new(args, opts, config).invoke(task, trailing || []) end end |
- (Object) help(task = nil)
239 240 241 |
# File 'lib/thor.rb', line 239 def help(task=nil) self.class.help(shell, task, :namespace => task && task.include?(?:)) end |