From ea106cf051e4fafcaf775f75bc4af17e89197a28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 23 Jun 2009 20:42:29 +0200 Subject: Added plugin generators (and a couple of TODOs). --- .../generators/rails/plugin/plugin_generator.rb | 41 ++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 railties/lib/generators/rails/plugin/plugin_generator.rb (limited to 'railties/lib/generators/rails/plugin/plugin_generator.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..38afb3984e --- /dev/null +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -0,0 +1,41 @@ +module Rails + module Generators + class PluginGenerator < NamedBase + def create_root + self.root = File.expand_path("vendor/plugins/#{file_name}", root) + empty_directory '.' + FileUtils.cd(root) + end + + # TODO Check class collision + + def create_root_files + %w(README MIT-LICENSE Rakefile init.rb install.rb uninstall.rb).each do |file| + template file + end + end + + def create_lib_files + directory 'lib' + end + + add_test_framework_option! + + class_option :with_tasks, :type => :boolean, :aliases => "-r", :default => false, + :desc => "When supplied creates tasks base files." + + class_option :with_generator, :type => :boolean, :aliases => "-g", :default => false, + :desc => "When supplied creates generator base files." + + def create_tasks_files + return unless options[:with_tasks] + directory 'tasks' + end + + def create_generator_files + return unless options[:with_generator] + directory 'generators' + end + end + end +end -- cgit v1.2.3 From ccd26575d12301816b11bdb22847e10173bd3ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 23 Jun 2009 21:07:12 +0200 Subject: Clean up plugin generator. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index 38afb3984e..12e67bd188 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -1,14 +1,20 @@ module Rails module Generators class PluginGenerator < NamedBase + class_option :with_tasks, :type => :boolean, :aliases => "-r", :default => false, + :desc => "When supplied creates tasks base files." + + class_option :with_generator, :type => :boolean, :aliases => "-g", :default => false, + :desc => "When supplied creates generator base files." + + # TODO Check class collision + def create_root self.root = File.expand_path("vendor/plugins/#{file_name}", root) empty_directory '.' FileUtils.cd(root) end - # TODO Check class collision - def create_root_files %w(README MIT-LICENSE Rakefile init.rb install.rb uninstall.rb).each do |file| template file @@ -21,12 +27,6 @@ module Rails add_test_framework_option! - class_option :with_tasks, :type => :boolean, :aliases => "-r", :default => false, - :desc => "When supplied creates tasks base files." - - class_option :with_generator, :type => :boolean, :aliases => "-g", :default => false, - :desc => "When supplied creates generator base files." - def create_tasks_files return unless options[:with_tasks] directory 'tasks' -- cgit v1.2.3 From f596495556f871650ed6b7a67128e4fd13cd3773 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Thu, 25 Jun 2009 10:18:00 +0200 Subject: Tests for plugin generator. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index 12e67bd188..58079fa5c9 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -25,7 +25,7 @@ module Rails directory 'lib' end - add_test_framework_option! + add_and_invoke_test_framework_option! def create_tasks_files return unless options[:with_tasks] -- cgit v1.2.3 From 4573fd2e06ee9b5a68f84f085f0a10c9ad6f129b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Thu, 25 Jun 2009 11:24:35 +0200 Subject: Added observer generator. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index 58079fa5c9..eb36cea0f1 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -8,6 +8,7 @@ module Rails :desc => "When supplied creates generator base files." # TODO Check class collision + # class_collision class_name def create_root self.root = File.expand_path("vendor/plugins/#{file_name}", root) -- cgit v1.2.3 From ed33c29a4e2a07c2a738ec13775c5cc0d7867b50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Thu, 25 Jun 2009 11:56:18 +0200 Subject: Added class collision checks. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index eb36cea0f1..4dbb3bfc0d 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -7,8 +7,9 @@ module Rails class_option :with_generator, :type => :boolean, :aliases => "-g", :default => false, :desc => "When supplied creates generator base files." - # TODO Check class collision - # class_collision class_name + def check_class_collision + class_collisions class_name + end def create_root self.root = File.expand_path("vendor/plugins/#{file_name}", root) -- cgit v1.2.3 From 0bb95968db3695467b63357aab66a9dddb62295c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Thu, 25 Jun 2009 15:45:15 +0200 Subject: More code refactoring. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index 4dbb3bfc0d..c3042afa94 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -27,7 +27,7 @@ module Rails directory 'lib' end - add_and_invoke_test_framework_option! + invoke_for :test_framework def create_tasks_files return unless options[:with_tasks] -- cgit v1.2.3 From 2f3681dfc24e51698b9b900a5d03950da4508d2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 26 Jun 2009 10:40:02 +0200 Subject: Clean up class collisions check and a class method helper. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index c3042afa94..30618bdca0 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -7,9 +7,7 @@ module Rails class_option :with_generator, :type => :boolean, :aliases => "-g", :default => false, :desc => "When supplied creates generator base files." - def check_class_collision - class_collisions class_name - end + check_class_collision def create_root self.root = File.expand_path("vendor/plugins/#{file_name}", root) -- cgit v1.2.3 From 1a15dd4de577d77f37bc39a1ca59f871aa9a395b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 27 Jun 2009 14:27:26 +0200 Subject: Rename invoke_for to hook_for. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index 30618bdca0..c2583ee147 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -25,7 +25,7 @@ module Rails directory 'lib' end - invoke_for :test_framework + hook_for :test_framework def create_tasks_files return unless options[:with_tasks] -- cgit v1.2.3 From c972b25df56e12a995774aa0291b2d8c2f3eabb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 1 Jul 2009 22:06:05 +0200 Subject: Tests for scaffold generator. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index c2583ee147..ec563be805 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -11,7 +11,7 @@ module Rails def create_root self.root = File.expand_path("vendor/plugins/#{file_name}", root) - empty_directory '.' + empty_directory '.' if behavior == :invoke FileUtils.cd(root) end @@ -36,6 +36,16 @@ module Rails return unless options[:with_generator] directory 'generators' end + + # Work around for generator to work on revoke. If we remove the root + # folder at the beginning, it will raise an error since FileUtils.cd + # will move to a non-existent folder. + # + def remove_on_revoke + return unless behavior == :revoke + FileUtils.cd("../../..") + empty_directory "vendor/plugins/#{file_name}" + end end end end -- cgit v1.2.3 From d1c404ee90ea7470d662517aa7a2d312a61c8c61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 3 Jul 2009 12:10:09 +0200 Subject: Added lookup to generators. --- .../generators/rails/plugin/plugin_generator.rb | 47 +++++++++------------- 1 file changed, 20 insertions(+), 27 deletions(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index ec563be805..9eaf902021 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -1,51 +1,44 @@ module Rails module Generators class PluginGenerator < NamedBase - class_option :with_tasks, :type => :boolean, :aliases => "-r", :default => false, - :desc => "When supplied creates tasks base files." + class_option :tasks, :type => :boolean, :aliases => "-t", :default => false, + :desc => "When supplied creates tasks base files." - class_option :with_generator, :type => :boolean, :aliases => "-g", :default => false, - :desc => "When supplied creates generator base files." + class_option :generator, :type => :boolean, :aliases => "-g", :default => false, + :desc => "When supplied creates generator base files." check_class_collision - def create_root - self.root = File.expand_path("vendor/plugins/#{file_name}", root) - empty_directory '.' if behavior == :invoke - FileUtils.cd(root) - end - def create_root_files - %w(README MIT-LICENSE Rakefile init.rb install.rb uninstall.rb).each do |file| - template file - end + directory '.', plugin_dir, false # non-recursive end def create_lib_files - directory 'lib' + directory 'lib', plugin_dir('lib'), false # non-recursive end hook_for :test_framework def create_tasks_files - return unless options[:with_tasks] - directory 'tasks' + return unless options[:tasks] + directory 'tasks', plugin_dir('tasks') end def create_generator_files - return unless options[:with_generator] - directory 'generators' + return unless options[:generator] + directory 'generators', plugin_dir('generators') end - # Work around for generator to work on revoke. If we remove the root - # folder at the beginning, it will raise an error since FileUtils.cd - # will move to a non-existent folder. - # - def remove_on_revoke - return unless behavior == :revoke - FileUtils.cd("../../..") - empty_directory "vendor/plugins/#{file_name}" - end + protected + + def plugin_dir(join=nil) + if join + File.join(plugin_dir, join) + else + "vendor/plugins/#{file_name}" + end + end + end end end -- cgit v1.2.3 From de68cf7e0624e7d8e7e94034858a061ca0f6f68c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 3 Jul 2009 12:19:22 +0200 Subject: Plugin generators now reflect new generators sutrcture. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index 9eaf902021..903f720e12 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -26,7 +26,7 @@ module Rails def create_generator_files return unless options[:generator] - directory 'generators', plugin_dir('generators') + directory 'lib/generators', plugin_dir('lib/generators') end protected -- cgit v1.2.3 From 0702e04e0d671227259f71f614adfe3f35f88b48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 15 Jul 2009 11:33:36 +0200 Subject: Refactored some generators to make use of improved invocations on thor. --- .../lib/generators/rails/plugin/plugin_generator.rb | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index 903f720e12..49fe409ea8 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -1,12 +1,11 @@ +require 'generators/rails/generator/generator_generator' + module Rails module Generators class PluginGenerator < NamedBase class_option :tasks, :type => :boolean, :aliases => "-t", :default => false, :desc => "When supplied creates tasks base files." - class_option :generator, :type => :boolean, :aliases => "-g", :default => false, - :desc => "When supplied creates generator base files." - check_class_collision def create_root_files @@ -17,16 +16,21 @@ module Rails directory 'lib', plugin_dir('lib'), false # non-recursive end - hook_for :test_framework - def create_tasks_files return unless options[:tasks] directory 'tasks', plugin_dir('tasks') end - def create_generator_files - return unless options[:generator] - directory 'lib/generators', plugin_dir('lib/generators') + hook_for :generator, :aliases => "-g", :type => :boolean do |instance, generator| + instance.inside_with_padding instance.send(:plugin_dir) do + instance.invoke generator, [ instance.name ], :namespace => false + end + end + + hook_for :test_framework do |instance, test_framework| + instance.inside_with_padding instance.send(:plugin_dir) do + instance.invoke test_framework + end end protected -- cgit v1.2.3 From 7022b58842ec3490d85efc5b947d86a0fd72d0cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 15 Jul 2009 16:20:48 +0200 Subject: Allow namespaced configuration on generators. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index 49fe409ea8..a7417f28c2 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -3,8 +3,7 @@ require 'generators/rails/generator/generator_generator' module Rails module Generators class PluginGenerator < NamedBase - class_option :tasks, :type => :boolean, :aliases => "-t", :default => false, - :desc => "When supplied creates tasks base files." + class_option :tasks, :desc => "When supplied creates tasks base files." check_class_collision @@ -21,7 +20,7 @@ module Rails directory 'tasks', plugin_dir('tasks') end - hook_for :generator, :aliases => "-g", :type => :boolean do |instance, generator| + hook_for :generator do |instance, generator| instance.inside_with_padding instance.send(:plugin_dir) do instance.invoke generator, [ instance.name ], :namespace => false end -- cgit v1.2.3 From b4ef958de6b16294094de28d00ba25fe2f48accc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 15 Jul 2009 20:16:37 +0200 Subject: Change false to :verbose => false as in new Thor version. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index a7417f28c2..dcdc125867 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -8,11 +8,11 @@ module Rails check_class_collision def create_root_files - directory '.', plugin_dir, false # non-recursive + directory '.', plugin_dir, :recursive => false end def create_lib_files - directory 'lib', plugin_dir('lib'), false # non-recursive + directory 'lib', plugin_dir('lib'), :recursive => false end def create_tasks_files -- cgit v1.2.3 From d6a590a7107eabd9c3ab067c60bef904da62f174 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Thu, 16 Jul 2009 11:17:19 +0200 Subject: Modified rake tasks to use new app generator structure and updated Thor version. --- railties/lib/generators/rails/plugin/plugin_generator.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'railties/lib/generators/rails/plugin/plugin_generator.rb') diff --git a/railties/lib/generators/rails/plugin/plugin_generator.rb b/railties/lib/generators/rails/plugin/plugin_generator.rb index dcdc125867..ee785caf7d 100644 --- a/railties/lib/generators/rails/plugin/plugin_generator.rb +++ b/railties/lib/generators/rails/plugin/plugin_generator.rb @@ -21,13 +21,13 @@ module Rails end hook_for :generator do |instance, generator| - instance.inside_with_padding instance.send(:plugin_dir) do + 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_with_padding instance.send(:plugin_dir) do + instance.inside instance.send(:plugin_dir), :verbose => true do instance.invoke test_framework end end -- cgit v1.2.3