Skip to content

Commit 4cdbbf3

Browse files
st0012vinistock
andcommitted
Allow installing RDoc from a git source
Co-authored-by: Vinicius Stock <[email protected]>
1 parent 546363d commit 4cdbbf3

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

Rakefile

+12-2
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,18 @@ parsed_files = PARSER_FILES.map do |parser_file|
9292
end
9393

9494
task "#{path}.gem" => package_parser_files
95-
desc "Generate all files used racc and kpeg"
96-
task :generate => parsed_files
95+
96+
desc "Generate all files use racc and kpeg"
97+
task :generate do
98+
unless ENV.key?('BUNDLE_GEMFILE')
99+
Gem.install 'racc', '> 1.4.10'
100+
Gem.install 'kpeg', '>= 1.3.3'
101+
end
102+
103+
parsed_files.each do |file_name|
104+
Rake::Task[file_name].invoke
105+
end
106+
end
97107

98108
task :clean do
99109
parsed_files.each do |path|

ext/rdoc/extconf.rb

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# frozen_string_literal: true
2+
3+
# Generate all parse files using racc and kpeg. This is not necessary for regular gem installation, but it is when
4+
# installing RDoc from the git source. Without this, the generated parse files would not exist and RDoc would not work
5+
system("rake generate") if Dir.exist?(File.join("..", "..", ".git"))
6+
7+
# RDoc doesn't actually have a native extension, but a Makefile needs to exist in order to successfully install the gem
8+
require "mkmf"
9+
create_makefile("rdoc/rdoc")

rdoc.gemspec

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ RDoc includes the +rdoc+ and +ri+ tools for generating and displaying documentat
3535
s.bindir = "exe"
3636
s.executables = ["rdoc", "ri"]
3737
s.require_paths = ["lib"]
38+
s.extensions = ["ext/rdoc/extconf.rb"]
3839
# for ruby core repository. It was generated by
3940
# `git ls-files -z`.split("\x0").each {|f| puts " #{f.dump}," unless f.start_with?(*%W[test/ spec/ features/ .]) }
4041
s.files = [

0 commit comments

Comments
 (0)