diff options
Diffstat (limited to 'lib/rake/task_manager.rb')
-rw-r--r-- | lib/rake/task_manager.rb | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/lib/rake/task_manager.rb b/lib/rake/task_manager.rb index 06c243a7b2..af53e3f586 100644 --- a/lib/rake/task_manager.rb +++ b/lib/rake/task_manager.rb @@ -4,9 +4,12 @@ module Rake module TaskManager # Track the last comment made in the Rakefile. attr_accessor :last_description - alias :last_comment :last_description # Backwards compatibility - def initialize + # TODO: Remove in Rake 11 + + alias :last_comment :last_description # :nodoc: Backwards compatibility + + def initialize # :nodoc: super @tasks = Hash.new @rules = Array.new @@ -14,14 +17,22 @@ module Rake @last_description = nil end - def create_rule(*args, &block) + def create_rule(*args, &block) # :nodoc: pattern, args, deps = resolve_args(args) pattern = Regexp.new(Regexp.quote(pattern) + '$') if String === pattern @rules << [pattern, args, deps, block] end - def define_task(task_class, *args, &block) + def define_task(task_class, *args, &block) # :nodoc: task_name, arg_names, deps = resolve_args(args) + + original_scope = @scope + if String === task_name and + not task_class.ancestors.include? Rake::FileTask then + task_name, *definition_scope = *(task_name.split(":").reverse) + @scope = Scope.make(*(definition_scope + @scope.to_a)) + end + task_name = task_class.scope_name(@scope, task_name) deps = [deps] unless deps.respond_to?(:to_ary) deps = deps.map { |d| d.to_s } @@ -32,6 +43,8 @@ module Rake task.add_description(get_description(task)) end task.enhance(deps, &block) + ensure + @scope = original_scope end # Lookup a task. Return an existing task if found, otherwise @@ -49,7 +62,7 @@ module Rake fail "Don't know how to build task '#{task_name}'" end - def synthesize_file_task(task_name) + def synthesize_file_task(task_name) # :nodoc: return nil unless File.exist?(task_name) define_task(Rake::FileTask, task_name) end @@ -226,7 +239,7 @@ module Rake "_anon_#{@seed}" end - def trace_rule(level, message) + def trace_rule(level, message) # :nodoc: options.trace_output.puts "#{" " * level}#{message}" if Rake.application.options.trace_rules end @@ -265,7 +278,7 @@ module Rake task_name.ext(ext) when String ext - when Proc + when Proc, Method if ext.arity == 1 ext.call(task_name) else @@ -289,7 +302,7 @@ module Rake end class << self - attr_accessor :record_task_metadata + attr_accessor :record_task_metadata # :nodoc: TaskManager.record_task_metadata = false end end |