I’m comparing Rake and NAnt for our pseudo-build process needs. I’ve
written the NAnt build file, and now I’m trying to port it (directly
at first) to Rake.
NAnt has a ‘move’ task for moving batches of files to a new directory.
By default, if you list specific files that don’t exist, they are
ignored (not errored). Here’s an example of the NAnt section I’m
trying to recreate:
Is there a built-in method for doing something like this (using
FileSet perhaps) that I’m not seeing in Rake? If not, does someone
else have a pre-built method that does this?
I’m comparing Rake and NAnt for our pseudo-build process needs. I’ve
written the NAnt build file, and now I’m trying to port it (directly
at first) to Rake.
NAnt has a ‘move’ task for moving batches of files to a new directory.
By default, if you list specific files that don’t exist, they are
ignored (not errored). Here’s an example of the NAnt section I’m
trying to recreate:
Is there a built-in method for doing something like this (using
FileSet perhaps) that I’m not seeing in Rake? If not, does someone
else have a pre-built method that does this?
Use a file list to build up your list of files. Eg.
Then just use a mv command. Unfortunately, using mv with a file list
seems to require an explicit ‘to_a’ call. That shouldn’t be the case
(I’ll see if I can fix that in an update).
Example:
task :move_files do
mv DAE_FILES.to_a, PATH_INTERMEDIATE
end
If you don’t want errors on non-existent files, you can filter them out:
task :move_files do
mv DAE_FILES.select { |fn| File.exist?(fn) }.to_a,
PATH_INTERMEDIATE
end
I just created a beta version of Rake that supports this. You can now
say:
task :move_files do
mv DAE_FILES.existing, PATH_INTERMEDIATE
end
FileLists now support an ‘existing’ method which returns a filelist
containing on ly existing file names. (There is also an existing!
method that does the same thing to the existing file list). Also,
FileLists can now be passed directly to FileUtils methods just like
arrays.