Class: Couch::Generators::Base

Inherits:
Thor::Group
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/couch/generators/base.rb

Direct Known Subclasses

ApplicationGenerator, NamedBase

Class Method Summary collapse

Class Method Details

Use Couch default banner.



49
50
51
# File 'lib/couch/generators/base.rb', line 49

def self.banner
  "couch generate|destroy #{generator_name} #{self.arguments.map{ |a| a.usage }.join(' ')} [options]"
end

.desc(description = nil) ⇒ Object

Tries to get the description from a USAGE file one folder above the source root otherwise uses a default description.



30
31
32
33
34
35
36
37
38
39
# File 'lib/couch/generators/base.rb', line 30

def self.desc(description=nil)
  return super if description
  usage = File.expand_path(File.join(source_root, "..", "USAGE"))

  @desc ||= if File.exist?(usage)
    File.read(usage)
  else
    "Description:\n    Create files for #{generator_name} generator."
  end
end

.generator_nameObject

Removes the namespaces and get the generator name. For example, Couch::Generators::MetalGenerator will return “metal” as generator name.



56
57
58
59
60
61
62
63
# File 'lib/couch/generators/base.rb', line 56

def self.generator_name
  @generator_name ||= begin
    if generator = name.to_s.split('::').last
      generator.sub!(/Generator$/, '')
      generator.underscore
    end
  end
end

.infoObject



41
42
43
# File 'lib/couch/generators/base.rb', line 41

def self.info
  desc.split(/\n+/)[1].strip
end

.source_rootObject

Automatically sets the source root based on the class name.



19
20
21
22
23
24
25
# File 'lib/couch/generators/base.rb', line 19

def self.source_root
  @_couch_source_root ||= begin
    if generator_name
      File.expand_path(File.join("../generators", generator_name, 'templates'), File.dirname(__FILE__))
    end
  end
end