module Roger::Generators

Generators namespace

Public Class Methods

generator_name(name, klass) click to toggle source
# File lib/roger/generators.rb, line 29
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) click to toggle source
# File lib/roger/generators.rb, line 12
def self.register(name, klass = nil)
  name, klass = generator_name(name, klass)

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

  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