1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/rdoc/rdoc.rb (RDoc#{setup,update}_output_dir): store mtimes

per files in the flag file.

* lib/rdoc/rdoc.rb (RDoc#normalized_file_list): skip already
  processed and unmodified files.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27207 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2010-04-03 09:15:13 +00:00
parent d38090cff5
commit 8acd03f0f7
2 changed files with 31 additions and 8 deletions

View file

@ -1,3 +1,11 @@
Sat Apr 3 18:15:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/rdoc/rdoc.rb (RDoc#{setup,update}_output_dir): store mtimes
per files in the flag file.
* lib/rdoc/rdoc.rb (RDoc#normalized_file_list): skip already
processed and unmodified files.
Sat Apr 3 15:09:30 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* common.mk (rdoc): no force-update, and add RDOCFLAGS.

View file

@ -135,20 +135,29 @@ class RDoc::RDoc
def setup_output_dir(op_dir, force)
flag_file = output_flag_file op_dir
last = {}
if File.exist? op_dir then
unless File.directory? op_dir then
error "'#{op_dir}' exists, and is not a directory"
end
begin
created = File.read(flag_file)
rescue SystemCallError
open(flag_file) do |f|
unless force
Time.parse(f.gets)
f.each do |line|
file, time = line.split(/\t/, 2)
time = Time.parse(time) rescue next
last[file] = time
end
end
end
rescue
error "\nDirectory #{op_dir} already exists, but it looks like it\n" +
"isn't an RDoc directory. Because RDoc doesn't want to risk\n" +
"destroying any of your existing files, you'll need to\n" +
"specify a different output directory name (using the\n" +
"--op <dir> option).\n\n"
else
last = (Time.parse(created) unless force rescue nil)
end
else
FileUtils.mkdir_p(op_dir)
@ -160,8 +169,13 @@ class RDoc::RDoc
##
# Update the flag file in an output directory.
def update_output_dir(op_dir, time)
File.open(output_flag_file(op_dir), "w") { |f| f.puts time.rfc2822 }
def update_output_dir(op_dir, time, last = {})
File.open(output_flag_file(op_dir), "w") do |f|
f.puts time.rfc2822
last.each do |n, t|
f.puts "#{n}\t#{t.rfc2822}"
end
end
end
##
@ -212,10 +226,11 @@ class RDoc::RDoc
case type = stat.ftype
when "file"
next if @last_created and stat.mtime < @last_created
next if last_created = @last_created[rel_file_name] and stat.mtime <= last_created
if force_doc or RDoc::Parser.can_parse(rel_file_name) then
file_list << rel_file_name.sub(/^\.\//, '')
@last_created[rel_file_name] = stat.mtime
end
when "directory"
next if rel_file_name == "CVS" || rel_file_name == ".svn"
@ -366,7 +381,7 @@ The internal error was:
self.class.current = self
@generator.generate file_info
update_output_dir ".", start_time
update_output_dir ".", start_time, @last_created
ensure
self.class.current = nil
end