speed up cleanup

This commit is contained in:
Aman Gupta 2011-03-10 20:11:45 -08:00
parent edef0251d3
commit be8b7715d3
1 changed files with 8 additions and 4 deletions

View File

@ -1,3 +1,5 @@
require 'set'
module Jekyll module Jekyll
class Site class Site
@ -158,13 +160,13 @@ module Jekyll
# Returns nothing # Returns nothing
def cleanup def cleanup
# all files and directories in destination, including hidden ones # all files and directories in destination, including hidden ones
dest_files = [] dest_files = Set.new
Dir.glob(File.join(self.dest, "**", "*"), File::FNM_DOTMATCH) do |file| Dir.glob(File.join(self.dest, "**", "*"), File::FNM_DOTMATCH) do |file|
dest_files << file unless file =~ /\/\.{1,2}$/ dest_files << file unless file =~ /\/\.{1,2}$/
end end
# files to be written # files to be written
files = [] files = Set.new
self.posts.each do |post| self.posts.each do |post|
files << post.destination(self.dest) files << post.destination(self.dest)
end end
@ -176,11 +178,13 @@ module Jekyll
end end
# adding files' parent directories # adding files' parent directories
files.each { |file| files << File.dirname(file) unless files.include? File.dirname(file) } dirs = Set.new
files.each { |file| dirs << File.dirname(file) }
files.merge(dirs)
obsolete_files = dest_files - files obsolete_files = dest_files - files
FileUtils.rm_rf(obsolete_files) FileUtils.rm_rf(obsolete_files.to_a)
end end
# Write static files, pages and posts # Write static files, pages and posts