[Rake-devel] Changing task dependencies from another task

Damphyr damphyr at freemail.gr
Wed Oct 5 11:25:40 EDT 2005


I thought this is a question better directed at the source instead of 
ruby-talk :).
Now, I have a script that generates HTML from XML for part of a site.
I use tasks to get the files from the source control repository, copy 
them to a directory that mirrors the structure of the actual site and 
then I scp the files over.

Now, I'm using the following code to find the files to copy:

#a file task for each target file
def to_target src,target_dir,trim=nil
	tgt=File.join(target_dir,src)
	tgt=File.join(target_dir,src.sub(trim,"")) if trim
	file tgt=>[src] do
		mkdir_p(File.dirname(tgt))
		cp(src,tgt) unless File.directory?(src)
	end
	return tgt
end

#lots of file tasks as prerequisites to :copy_generated
def create_list
	sitelist=FileList["/publish/generated/**/*"]
	sitelist.each{|src|
			targeted=to_target(src,PUBLISH,/htdocs\//)
			task :copy_generated=>[targeted]
			@changed_files<<targeted if 		Rake::Task.lookup(targeted).needed?
	}
end

task :generate do
	#generate lots of files in /publish/generated/
end

task :post_generate=>[:generate] do
	create_list
end

task :copy_generated=>[:post_generate]

Now, the problem is that :copy_generated does not cause the file tasks 
added as requisites in :post_generate to be executed although the 
Task#lookup(..).needed? call returns true and gives me the proper task 
name.
This at the moment forces me to generate that part of the site 
everytime. The other workaround I have is rewrite the generator to use 
Rake filetasks, but that is not done in 10 minutes.

Obviously at the moment :copy_generated is called the prerequisites are 
evaluated and when we come back from any other tasks it is assumed that 
prerequisites have not changed.
Is this a reasonable feature request (re-evaluating the list of 
prerequisites when all prerequisite tasks are done)? Do I miss something?
Cheers,
V.-
-- 
http://www.braveworld.net/riva

____________________________________________________________________
http://www.freemail.gr - äùñåÜí õðçñåóßá çëåêôñïíéêïý ôá÷õäñïìåßïõ.
http://www.freemail.gr - free email service for the Greek-speaking.


More information about the Rake-devel mailing list