summaryrefslogtreecommitdiff
path: root/tool/rdoc-srcdir
blob: ecc49b4b2cbb1d9059719e323d3e9ed4be59a65d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!ruby -W0

%w[tsort rdoc].each do |lib|
  path = Dir.glob("#{File.dirname(__dir__)}/.bundle/gems/#{lib}-*").first
  $LOAD_PATH.unshift("#{path}/lib")
end
require 'rdoc/rdoc'

# Make only the output directory relative to the invoked directory.
invoked = Dir.pwd

# Load options and parse files from srcdir.
Dir.chdir(File.dirname(__dir__))

options = RDoc::Options.load_options
options.title = options.title.sub(/Ruby \K.*version/) {
  File.read("include/ruby/version.h")
    .scan(/^ *# *define +RUBY_API_VERSION_(MAJOR|MINOR) +(\d+)/)
    .sort # "MAJOR" < "MINOR", fortunately
    .to_h.values.join(".")
}
options.parse ARGV + ["#{invoked}/rbconfig.rb"]

options.singleton_class.define_method(:finish) do
  super()
  @op_dir = File.expand_path(@op_dir, invoked)
end

# Do not hide errors when generating documents of Ruby itself.
RDoc::RDoc.new.document options