aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/generators/rails/plugin
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/generators/rails/plugin')
-rw-r--r--railties/lib/generators/rails/plugin/USAGE13
-rw-r--r--railties/lib/generators/rails/plugin/plugin_generator.rb47
-rw-r--r--railties/lib/generators/rails/plugin/templates/MIT-LICENSE20
-rw-r--r--railties/lib/generators/rails/plugin/templates/README13
-rw-r--r--railties/lib/generators/rails/plugin/templates/Rakefile23
-rw-r--r--railties/lib/generators/rails/plugin/templates/init.rb1
-rw-r--r--railties/lib/generators/rails/plugin/templates/install.rb1
-rw-r--r--railties/lib/generators/rails/plugin/templates/lib/%file_name%.rb.tt1
-rw-r--r--railties/lib/generators/rails/plugin/templates/tasks/%file_name%_tasks.rake.tt4
-rw-r--r--railties/lib/generators/rails/plugin/templates/uninstall.rb1
10 files changed, 124 insertions, 0 deletions
diff --git a/railties/lib/generators/rails/plugin/USAGE b/railties/lib/generators/rails/plugin/USAGE
new file mode 100644
index 0000000000..8a17fa4dec
--- /dev/null
+++ b/railties/lib/generators/rails/plugin/USAGE
@@ -0,0 +1,13 @@
+Description:
+ Stubs out a new plugin at vendor/plugins. Pass the plugin name, either
+ CamelCased or under_scored, as an argument.
+
+Example:
+ `./script/generate plugin BrowserFilters`
+
+ creates a standard browser_filters plugin:
+ vendor/plugins/browser_filters/README
+ vendor/plugins/browser_filters/init.rb
+ vendor/plugins/browser_filters/install.rb
+ vendor/plugins/browser_filters/lib/browser_filters.rb
+ vendor/plugins/browser_filters/test/browser_filters_test.rb
diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb
new file mode 100644
index 0000000000..ee785caf7d
--- /dev/null
+++ b/railties/lib/generators/rails/plugin/plugin_generator.rb
@@ -0,0 +1,47 @@
+require 'generators/rails/generator/generator_generator'
+
+module Rails
+ module Generators
+ class PluginGenerator < NamedBase
+ class_option :tasks, :desc => "When supplied creates tasks base files."
+
+ check_class_collision
+
+ def create_root_files
+ directory '.', plugin_dir, :recursive => false
+ end
+
+ def create_lib_files
+ directory 'lib', plugin_dir('lib'), :recursive => false
+ end
+
+ def create_tasks_files
+ return unless options[:tasks]
+ directory 'tasks', plugin_dir('tasks')
+ end
+
+ hook_for :generator do |instance, generator|
+ instance.inside instance.send(:plugin_dir), :verbose => true do
+ instance.invoke generator, [ instance.name ], :namespace => false
+ end
+ end
+
+ hook_for :test_framework do |instance, test_framework|
+ instance.inside instance.send(:plugin_dir), :verbose => true do
+ instance.invoke test_framework
+ end
+ end
+
+ protected
+
+ def plugin_dir(join=nil)
+ if join
+ File.join(plugin_dir, join)
+ else
+ "vendor/plugins/#{file_name}"
+ end
+ end
+
+ end
+ end
+end
diff --git a/railties/lib/generators/rails/plugin/templates/MIT-LICENSE b/railties/lib/generators/rails/plugin/templates/MIT-LICENSE
new file mode 100644
index 0000000000..8717df053d
--- /dev/null
+++ b/railties/lib/generators/rails/plugin/templates/MIT-LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) <%= Date.today.year %> [name of plugin creator]
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/railties/lib/generators/rails/plugin/templates/README b/railties/lib/generators/rails/plugin/templates/README
new file mode 100644
index 0000000000..702db07cb1
--- /dev/null
+++ b/railties/lib/generators/rails/plugin/templates/README
@@ -0,0 +1,13 @@
+<%= class_name %>
+<%= "=" * class_name.size %>
+
+Introduction goes here.
+
+
+Example
+=======
+
+Example goes here.
+
+
+Copyright (c) <%= Date.today.year %> [name of plugin creator], released under the MIT license
diff --git a/railties/lib/generators/rails/plugin/templates/Rakefile b/railties/lib/generators/rails/plugin/templates/Rakefile
new file mode 100644
index 0000000000..85e8ff1834
--- /dev/null
+++ b/railties/lib/generators/rails/plugin/templates/Rakefile
@@ -0,0 +1,23 @@
+require 'rake'
+require 'rake/testtask'
+require 'rake/rdoctask'
+
+desc 'Default: run unit tests.'
+task :default => :test
+
+desc 'Test the <%= file_name %> plugin.'
+Rake::TestTask.new(:test) do |t|
+ t.libs << 'lib'
+ t.libs << 'test'
+ t.pattern = 'test/**/*_test.rb'
+ t.verbose = true
+end
+
+desc 'Generate documentation for the <%= file_name %> plugin.'
+Rake::RDocTask.new(:rdoc) do |rdoc|
+ rdoc.rdoc_dir = 'rdoc'
+ rdoc.title = '<%= class_name %>'
+ rdoc.options << '--line-numbers' << '--inline-source'
+ rdoc.rdoc_files.include('README')
+ rdoc.rdoc_files.include('lib/**/*.rb')
+end
diff --git a/railties/lib/generators/rails/plugin/templates/init.rb b/railties/lib/generators/rails/plugin/templates/init.rb
new file mode 100644
index 0000000000..3c19a743c9
--- /dev/null
+++ b/railties/lib/generators/rails/plugin/templates/init.rb
@@ -0,0 +1 @@
+# Include hook code here
diff --git a/railties/lib/generators/rails/plugin/templates/install.rb b/railties/lib/generators/rails/plugin/templates/install.rb
new file mode 100644
index 0000000000..f7732d3796
--- /dev/null
+++ b/railties/lib/generators/rails/plugin/templates/install.rb
@@ -0,0 +1 @@
+# Install hook code here
diff --git a/railties/lib/generators/rails/plugin/templates/lib/%file_name%.rb.tt b/railties/lib/generators/rails/plugin/templates/lib/%file_name%.rb.tt
new file mode 100644
index 0000000000..d8d908a959
--- /dev/null
+++ b/railties/lib/generators/rails/plugin/templates/lib/%file_name%.rb.tt
@@ -0,0 +1 @@
+# <%= class_name %>
diff --git a/railties/lib/generators/rails/plugin/templates/tasks/%file_name%_tasks.rake.tt b/railties/lib/generators/rails/plugin/templates/tasks/%file_name%_tasks.rake.tt
new file mode 100644
index 0000000000..72920a9d3a
--- /dev/null
+++ b/railties/lib/generators/rails/plugin/templates/tasks/%file_name%_tasks.rake.tt
@@ -0,0 +1,4 @@
+# desc "Explaining what the task does"
+# task :<%= file_name %> do
+# # Task goes here
+# end
diff --git a/railties/lib/generators/rails/plugin/templates/uninstall.rb b/railties/lib/generators/rails/plugin/templates/uninstall.rb
new file mode 100644
index 0000000000..9738333463
--- /dev/null
+++ b/railties/lib/generators/rails/plugin/templates/uninstall.rb
@@ -0,0 +1 @@
+# Uninstall hook code here