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"