diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-09-05 10:31:06 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2008-09-05 10:31:06 +0000 |
commit | f7acdd1afde3018a9f7c0a7dc3b6bd97a65670a2 (patch) | |
tree | ba4070526883885914942b3a0d253eb2a6e63bf8 /lib/tasks | |
parent | 4b9df2eac774aa045aa5207c8bc613ed6ca67d42 (diff) | |
download | redmine-f7acdd1afde3018a9f7c0a7dc3b6bd97a65670a2.tar.gz redmine-f7acdd1afde3018a9f7c0a7dc3b6bd97a65670a2.zip |
Merged hooks branch @ r1785 into trunk.
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1786 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'lib/tasks')
-rw-r--r-- | lib/tasks/plugins.rake | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/tasks/plugins.rake b/lib/tasks/plugins.rake new file mode 100644 index 000000000..136877164 --- /dev/null +++ b/lib/tasks/plugins.rake @@ -0,0 +1,38 @@ +require 'source_annotation_extractor' + +# Modified version of the SourceAnnotationExtractor in railties +# Will search for runable code that uses <tt>call_hook</tt> +class PluginSourceAnnotationExtractor < SourceAnnotationExtractor + # Returns a hash that maps filenames under +dir+ (recursively) to arrays + # with their annotations. Only files with annotations are included, and only + # those with extension +.builder+, +.rb+, +.rxml+, +.rjs+, +.rhtml+, and +.erb+ + # are taken into account. + def find_in(dir) + results = {} + + Dir.glob("#{dir}/*") do |item| + next if File.basename(item)[0] == ?. + + if File.directory?(item) + results.update(find_in(item)) + elsif item =~ /(hook|test)\.rb/ + # skip + elsif item =~ /\.(builder|(r(?:b|xml|js)))$/ + results.update(extract_annotations_from(item, /\s*(#{tag})\(?\s*(.*)$/)) + elsif item =~ /\.(rhtml|erb)$/ + results.update(extract_annotations_from(item, /<%=\s*\s*(#{tag})\(?\s*(.*?)\s*%>/)) + end + end + + results + end +end + +namespace :redmine do + namespace :plugins do + desc "Enumerate all Redmine plugin hooks and their context parameters" + task :hook_list do + PluginSourceAnnotationExtractor.enumerate 'call_hook' + end + end +end |