Module: Thor::Base

Included in:
Thor, Group
Defined in:
lib/thor/base.rb,
lib/thor/shell.rb

Defined Under Namespace

Modules: ClassMethods

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#optionsObject

Returns the value of attribute options


22
23
24
# File 'lib/thor/base.rb', line 22

def options
  @options
end

Class Method Details

.included(base) ⇒ Object

:nodoc:


60
61
62
63
64
# File 'lib/thor/base.rb', line 60

def included(base) #:nodoc:
  base.send :extend,  ClassMethods
  base.send :include, Invocation
  base.send :include, Shell
end

.register_klass_file(klass) ⇒ Object

Whenever a class inherits from Thor or Thor::Group, we should track the class and the file on Thor::Base. This is the method responsable for it.


87
88
89
90
91
92
93
# File 'lib/thor/base.rb', line 87

def register_klass_file(klass) #:nodoc:
  file = caller[1].match(/(.*):\d+/)[1]
  Thor::Base.subclasses << klass unless Thor::Base.subclasses.include?(klass)

  file_subclasses = Thor::Base.subclass_files[File.expand_path(file)]
  file_subclasses << klass unless file_subclasses.include?(klass)
end

.shellObject

Returns the shell used in all Thor classes. If you are in a Unix platform it will use a colored log, otherwise it will use a basic one without color.


8
9
10
11
12
13
14
15
16
# File 'lib/thor/shell.rb', line 8

def self.shell
  @shell ||= if ENV['THOR_SHELL'] && ENV['THOR_SHELL'].size > 0
    Thor::Shell.const_get(ENV['THOR_SHELL'])
  elsif RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
    Thor::Shell::Basic
  else
    Thor::Shell::Color
  end
end

.shell=(klass) ⇒ Object

Sets the shell used in all Thor classes.


20
21
22
# File 'lib/thor/shell.rb', line 20

def self.shell=(klass)
  @shell = klass
end

.subclass_filesObject

Returns the files where the subclasses are kept.

Returns

Hash[path<String> => Class]


80
81
82
# File 'lib/thor/base.rb', line 80

def subclass_files
  @subclass_files ||= Hash.new{ |h,k| h[k] = [] }
end

.subclassesObject

Returns the classes that inherits from Thor or Thor::Group.

Returns

Array


71
72
73
# File 'lib/thor/base.rb', line 71

def subclasses
  @subclasses ||= []
end