Sha256: 2ea8d55cd02f596d9cc60f369910b105a657c0d6284c5b988b83e0f1b8253196

Contents?: true

Size: 1.7 KB

Versions: 4

Compression:

Stored size: 1.7 KB

Contents

module Gator
  module Generators
    class << self

      def add(generator)
        unless will_collide? generator
          generators.push(generator)
          return true
        end
        false
      end

      def remove(generator)
        generators.delete(generator) != nil?
      end

      def has?(name_or_alias)
        generators.any? { |generator| generator.generator_name == name_or_alias || generator.generator_alias == name_or_alias }
      end

      def get(name_or_alias)
        generators.detect { |generator| generator.generator_name == name_or_alias || generator.generator_alias == name_or_alias }
      end

      protected

      def generators
        @generators ||= []
      end

      def will_collide?(generator)
        has?(generator.generator_name) || has?(generator.generator_alias)
      end

    end

    class Base < Thor::Group

      class << self
        attr_reader :generator_name, :generator_alias

        def specify( generator_name, generator_alias )
          @generator_name, @generator_alias = generator_name, generator_alias
        end
      end

    end

    class GeneratorCommand < Gator::Command::Base
      include Thor::Actions

      specify "generate", "g"

      def self.source_root
        File.dirname(__FILE__)
      end

      argument :name, :type => :string, :desc => "The name of the generator."
#      argument :args, :type => :array
      desc "Finds and executes a generator."

      def find_and_execute
        raise "Generator: \"#{name}\" could not be found." unless Gator::Generators.has?(name)
        ARGV.shift
        ARGV << "--help" if ARGV.empty?

        Gator::Generators.get(name).start
      end

    end

    Gator::Command.add GeneratorCommand
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gator-0.0.8.pre lib/__legacy/default/commands/generator_command.rb
gator-0.0.7.pre lib/__legacy/default/commands/generator_command.rb
gator-0.0.6.pre lib/__legacy/default/commands/generator_command.rb
gator-0.0.5.pre lib/default/commands/generator_command.rb