mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Added Rails::Generators.find_by_namespace.
This commit is contained in:
@@ -34,15 +34,9 @@ Rails::Generators.builtin.each do |group, name|
|
||||
require "generators/#{group}/#{name}/#{name}_generator"
|
||||
end
|
||||
|
||||
name = ARGV.shift
|
||||
middle = name.sub(':', ':generators:') if name.count(':') == 1
|
||||
full = "rails:generators:#{name}" if name.count(':') == 0
|
||||
name = ARGV.shift
|
||||
|
||||
if full && klass = Thor::Util.find_by_namespace(full)
|
||||
klass.start
|
||||
elsif middle && klass = Thor::Util.find_by_namespace(middle)
|
||||
klass.start
|
||||
elsif klass = Thor::Util.find_by_namespace(name)
|
||||
if klass = Rails::Generators.find_by_namespace(name, "rails")
|
||||
klass.start
|
||||
else
|
||||
puts "Could not find generator #{name}."
|
||||
|
||||
@@ -22,6 +22,42 @@ module Rails
|
||||
file.split('/')[-2, 2]
|
||||
end
|
||||
end
|
||||
|
||||
# Receives a namespace and tries different combinations to find a generator.
|
||||
#
|
||||
# ==== Examples
|
||||
#
|
||||
# lookup_by_namespace :webrat, :rails, :integration
|
||||
#
|
||||
# Will search for the following generators:
|
||||
#
|
||||
# "rails:generators:webrat", "webrat:generators:integration", "webrat"
|
||||
#
|
||||
# If the namespace has ":" included we consider that a absolute namespace
|
||||
# was given and the lookup above does not happen. Just the name is searched.
|
||||
#
|
||||
# Finally, it deals with one kind of shortcut:
|
||||
#
|
||||
# lookup_by_namespace "test_unit:model"
|
||||
#
|
||||
# It will search for generators at:
|
||||
#
|
||||
# "test_unit:generators:model", "test_unit:model"
|
||||
#
|
||||
def self.find_by_namespace(name, base=nil, context=nil)
|
||||
attempts = [ ]
|
||||
attempts << "#{base}:generators:#{name}" if base && name.count(':') == 0
|
||||
attempts << "#{name}:generators:#{context}" if context && name.count(':') == 0
|
||||
attempts << name.sub(':', ':generators:') if name.count(':') == 1
|
||||
attempts << name
|
||||
|
||||
attempts.each do |namespace|
|
||||
klass, task = Thor::Util.find_by_namespace(namespace)
|
||||
return klass if klass
|
||||
end
|
||||
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user