aboutsummaryrefslogtreecommitdiffstats
path: root/railties/bin
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2009-06-25 17:34:09 +0200
committerJosé Valim <jose.valim@gmail.com>2009-06-26 11:59:13 +0200
commit0f1c325f3cd8bfbedc0a6e4925122016288e2817 (patch)
tree0eaecf50e4e72ab4a71958385c15930e6555615d /railties/bin
parent915f108d6a47b9c29e11ebe0b140ef017eb015b0 (diff)
downloadrails-0f1c325f3cd8bfbedc0a6e4925122016288e2817.tar.gz
rails-0f1c325f3cd8bfbedc0a6e4925122016288e2817.tar.bz2
rails-0f1c325f3cd8bfbedc0a6e4925122016288e2817.zip
Improving generators runner.
Diffstat (limited to 'railties/bin')
-rwxr-xr-xrailties/bin/gen30
1 files changed, 24 insertions, 6 deletions
diff --git a/railties/bin/gen b/railties/bin/gen
index fab4866407..8dc6ba3cb0 100755
--- a/railties/bin/gen
+++ b/railties/bin/gen
@@ -7,22 +7,40 @@ if %w(--version -v).include? ARGV.first
exit(0)
end
+require File.dirname(__FILE__) + '/../lib/generators'
+
if ARGV.size == 0
- puts "Please select a generator. Options: foo, bar"
- return
+ rails = Rails::Generators.builtin.map do |group, name|
+ name if group == "rails"
+ end
+ rails.compact!
+ rails.sort!
+
+ others = Rails::Generators.builtin.map do |group, name|
+ "#{group}:#{name}" unless rails.include?(name)
+ end.compact
+ others.sort!
+
+ puts "Please select a generator."
+ puts "Builtin: #{rails.join(', ')}."
+ puts "Others: #{others.join(', ')}."
+
+ exit
elsif ARGV.size == 1
ARGV << "--help"
end
-require File.dirname(__FILE__) + '/../lib/generators'
-
Rails::Generators.builtin.each do |group, name|
require "generators/#{group}/#{name}/#{name}_generator"
end
-name = ARGV.shift
+name = ARGV.shift
+middle = name.sub(':', ':generators:') if name.count(':') == 1
+full = "rails:generators:#{name}" if name.count(':') == 0
-if klass = Thor::Util.find_by_namespace("rails:generators:#{name}")
+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)
klass.start