From be8b7715d30bcbf1ba9d6ae489e80df25206762d Mon Sep 17 00:00:00 2001 From: Aman Gupta Date: Thu, 10 Mar 2011 20:11:45 -0800 Subject: [PATCH] speed up cleanup --- lib/jekyll/site.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/jekyll/site.rb b/lib/jekyll/site.rb index 55b5c9d4..f7bea02e 100644 --- a/lib/jekyll/site.rb +++ b/lib/jekyll/site.rb @@ -1,3 +1,5 @@ +require 'set' + module Jekyll class Site @@ -158,13 +160,13 @@ module Jekyll # Returns nothing def cleanup # 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| dest_files << file unless file =~ /\/\.{1,2}$/ end # files to be written - files = [] + files = Set.new self.posts.each do |post| files << post.destination(self.dest) end @@ -176,11 +178,13 @@ module Jekyll end # 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 - FileUtils.rm_rf(obsolete_files) + FileUtils.rm_rf(obsolete_files.to_a) end # Write static files, pages and posts