aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2009-07-13 23:01:12 +0200
committerJosé Valim <jose.valim@gmail.com>2009-07-13 23:01:12 +0200
commit52673cd2eee2bdd65f4ae636f4fdc209186ab868 (patch)
treeedd312bdbc2d24dafa51b6a1ad76410eecbf9700 /railties/lib
parenta5ab030ae4ca7496fc9167c9ffa4717be130b235 (diff)
downloadrails-52673cd2eee2bdd65f4ae636f4fdc209186ab868.tar.gz
rails-52673cd2eee2bdd65f4ae636f4fdc209186ab868.tar.bz2
rails-52673cd2eee2bdd65f4ae636f4fdc209186ab868.zip
Added a generator generator.
Diffstat (limited to 'railties/lib')
-rw-r--r--railties/lib/generators/rails/generator/USAGE11
-rw-r--r--railties/lib/generators/rails/generator/generator_generator.rb26
-rw-r--r--railties/lib/generators/rails/generator/templates/USAGE8
-rw-r--r--railties/lib/generators/rails/generator/templates/generator.rb5
4 files changed, 50 insertions, 0 deletions
diff --git a/railties/lib/generators/rails/generator/USAGE b/railties/lib/generators/rails/generator/USAGE
new file mode 100644
index 0000000000..ca7d3f62d0
--- /dev/null
+++ b/railties/lib/generators/rails/generator/USAGE
@@ -0,0 +1,11 @@
+Description:
+ Stubs out a new generator at lib/generators. Pass the generator name, either
+ CamelCased or under_scored, as an argument.
+
+Example:
+ `./script/generate generator Awesome`
+
+ creates a standard awesome generator:
+ lib/generators/awesome/
+ lib/generators/awesome/awesome_generator.rb
+ lib/generators/awesome/templates/
diff --git a/railties/lib/generators/rails/generator/generator_generator.rb b/railties/lib/generators/rails/generator/generator_generator.rb
new file mode 100644
index 0000000000..8a4e949b3d
--- /dev/null
+++ b/railties/lib/generators/rails/generator/generator_generator.rb
@@ -0,0 +1,26 @@
+module Rails
+ module Generators
+ class GeneratorGenerator < NamedBase
+ check_class_collision :suffix => "Generator"
+
+ def copy_generator_file
+ template "generator.rb", generator_dir("#{file_name}_generator.rb")
+ end
+
+ def copy_usage_file
+ template "USAGE", generator_dir("USAGE")
+ end
+
+ def create_templates_dir
+ empty_directory generator_dir("templates")
+ end
+
+ protected
+
+ def generator_dir(join)
+ File.join("lib", "generators", file_name, join)
+ end
+
+ end
+ end
+end
diff --git a/railties/lib/generators/rails/generator/templates/USAGE b/railties/lib/generators/rails/generator/templates/USAGE
new file mode 100644
index 0000000000..ea9f4f12cc
--- /dev/null
+++ b/railties/lib/generators/rails/generator/templates/USAGE
@@ -0,0 +1,8 @@
+Description:
+ Explain the generator
+
+Example:
+ ./script/generate <%= file_name %> Thing
+
+ This will create:
+ what/will/it/create
diff --git a/railties/lib/generators/rails/generator/templates/generator.rb b/railties/lib/generators/rails/generator/templates/generator.rb
new file mode 100644
index 0000000000..675f00043f
--- /dev/null
+++ b/railties/lib/generators/rails/generator/templates/generator.rb
@@ -0,0 +1,5 @@
+class <%= class_name %>Generator < Rails::Generators::NamedBase
+ def self.source_root
+ @source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
+ end
+end