def stage(stage_directory, source_directory, files, options={})
return stage_directory if options[:noop] || options[:dryrun]
stage_directory, source_directory = stage_directory.to_s, source_directory.to_s
rm_r(stage_directory) if File.directory?(stage_directory)
mkdir_p(stage_directory)
files.each do |f|
src = File.join(source_directory, f)
file = File.join(stage_directory, f)
if File.directory?(src)
mkdir_p(file) unless File.exist?(file)
else
fdir = File.dirname(file)
mkdir_p(fdir) unless File.exist?(fdir)
unless File.exist?(file) and File.mtime(file) >= File.mtime(src)
ln(src, file)
end
end
end
return stage_directory
end