lib/roger/generators.rb in roger-1.1.3 vs lib/roger/generators.rb in roger-1.2.1
- old
+ new
@@ -1,35 +1,43 @@
-require 'thor'
-require 'thor/group'
+require "thor"
+require "thor/group"
module Roger
+ # Generators namespace
module Generators
-
+ # Base Generator class
class Base < Cli::Command
end
- def self.register(name, sub = nil)
- # Hack to not break old tasks
- if name.kind_of?(Class)
- sub = name
- name = sub.to_s.sub(/Generator$/, "").sub(/^.*Generators::/,"").downcase
- else
- raise ArgumentError, "Name must be a symbol" unless name.kind_of?(Symbol)
- end
+ def self.register(name, klass = nil)
+ name, klass = generator_name(name, klass)
- name = name.to_s
+ fail(
+ ArgumentError,
+ "Generator name '#{name.inspect}' already in use"
+ ) if Cli::Generate.tasks.key?(name)
- raise ArgumentError, "Another generator has already claimed the name #{name.inspect}" if Cli::Generate.tasks.has_key?(name)
+ usage = "#{name} #{klass.arguments.map(&:banner).join(' ')}"
+ long_desc = klass.desc || "Run #{name} generator"
- usage = "#{name} #{sub.arguments.map{ |arg| arg.banner }.join(" ")}"
- long_desc = sub.desc || "Run #{name} generator"
-
- Cli::Generate.register sub, name, usage, long_desc
- Cli::Generate.tasks[name].options = sub.class_options if sub.class_options
+ Cli::Generate.register klass, name, usage, long_desc
+ Cli::Generate.tasks[name].options = klass.class_options if klass.class_options
end
+ 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
+ fail ArgumentError, "Name must be a symbol" unless name.is_a?(Symbol)
+ end
+
+ [name.to_s, klass]
+ end
end
end
# Default generators
require File.dirname(__FILE__) + "/generators/new"
-require File.dirname(__FILE__) + "/generators/generator"
\ No newline at end of file
+require File.dirname(__FILE__) + "/generators/generator"