Module: Roger::Generators

Defined in:
lib/roger/generators.rb

Overview

Generators namespace

Defined Under Namespace

Classes: Base, GeneratorGenerator, NewGenerator

Class Method Summary collapse

Class Method Details

.generator_name(name, klass) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/roger/generators.rb', line 27

def self.generator_name(name, klass)
  # Hack to not break old tasks

  if name.is_a?(Class)
    klass = name
    name = klass.to_s.sub(/Generator$/, "").sub(/^.*Generators::/, "").downcase
  else
    raise ArgumentError, "Name must be a symbol" unless name.is_a?(Symbol)
  end

  [name.to_s, klass]
end

.register(name, klass = nil) ⇒ Object

Raises:

  • (ArgumentError)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/roger/generators.rb', line 12

def self.register(name, klass = nil)
  name, klass = generator_name(name, klass)

  raise(
    ArgumentError,
    "Generator name '#{name.inspect}' already in use"
  ) if Cli::Generate.tasks.key?(name)

  usage = "#{name} #{klass.arguments.map(&:banner).join(' ')}"
  long_desc = klass.desc || "Run #{name} generator"

  Cli::Generate.register klass, name, usage, long_desc
  Cli::Generate.tasks[name].options = klass.class_options if klass.class_options
end