#!/usr/bin/env ruby desc "copy" task :copy do puts "COPY" end namespace "nest" do desc "nest copy" task :copy do puts "NEST COPY" end task :xx => :copy end anon_ns = namespace do desc "anonymous copy task" task :copy do puts "ANON COPY" end end desc "Top level task to run the anonymous version of copy" task :anon => anon_ns[:copy] namespace "very" do namespace "nested" do task "run" => "rake:copy" end end namespace "a" do desc "Run task in the 'a' namespace" task "run" do puts "IN A" end end namespace "b" do desc "Run task in the 'b' namespace" task "run" => "a:run" do puts "IN B" end end namespace "file1" do file "xyz.rb" do puts "XYZ1" end end namespace "file2" do file "xyz.rb" do puts "XYZ2" end end