lib/adhearsion/generators.rb in adhearsion-2.0.0.alpha2 vs lib/adhearsion/generators.rb in adhearsion-2.0.0.alpha3

- old
+ new

@@ -1,5 +1,56 @@ module Adhearsion module Generators extend ActiveSupport::Autoload - end -end + + autoload :Generator + + class << self + + # Show help message with available generators. + def help(command = 'generate') + puts "Usage: ahn #{command} GENERATOR_NAME [args] [options]" + puts + puts "Please choose a generator below." + puts + + mappings.each_pair do |name, klass| + puts name + end + end + + def invoke(generator_name, args = ARGV) + klass = Generators.mappings[generator_name.to_sym] + raise UnknownGeneratorError, generator_name unless klass + + args << "--help" if args.empty? && klass.arguments.any?(&:required?) + + klass.start args + end + + ## + # Return a ordered list of task with their class + # + def mappings + @_mappings ||= Hash.new + end + + ## + # Globally add a new generator class to +ahn generate+ + # + # @param [Symbol] name + # key name for generator mapping + # @param [Class] klass + # class of generator + # + # @return [Hash] generator mappings + # + # @example + # Adhearsion::Generators.add_generator :myplugin, MyPluginGenerator + # + def add_generator(name, klass) + mappings[name] = klass + end + + end#class << self + end#module +end#module