Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,3 @@ jobs:
bundler-cache: true
- name: Run rubocop
run: bundle exec rubocop
- name: Sanity check for the format_generated_files task
run: bundle exec rake generate format_generated_files

2 changes: 2 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ jobs:
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true # 'bundle install' and cache
- name: Verify generated parser files
run: bundle exec rake verify_generated
- name: Run test
run: bundle exec rake
env:
Expand Down
4 changes: 0 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,6 @@
/TAGS
/html
/_site
/lib/rdoc/rd/block_parser.rb
/lib/rdoc/rd/inline_parser.rb
/lib/rdoc/markdown.rb
/lib/rdoc/markdown/literals.rb
/pkg
/tmp
Gemfile.lock
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ source 'https://rubygems.org'
gemspec

gem 'rake'
gem 'racc', '> 1.4.10'
gem 'racc', '1.8.1'
gem 'kpeg', '>= 1.3.3'
gem 'test-unit'
gem 'test-unit-ruby-core'
Expand Down
61 changes: 29 additions & 32 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ $:.unshift File.expand_path('lib', __dir__) # default template dir
require_relative 'lib/rdoc/task'
require 'bundler/gem_tasks'
require 'rake/testtask'
require 'rubocop/rake_task'

task :test => [:normal_test, :rubygems_test]

Expand Down Expand Up @@ -37,29 +38,14 @@ end

Rake::TestTask.new(:normal_test) do |t|
t.verbose = true
t.deps = :generate
t.test_files = FileList["test/**/*_test.rb"].exclude("test/rdoc/rdoc_rubygems_hook_test.rb")
end

Rake::TestTask.new(:rubygems_test) do |t|
t.verbose = true
t.deps = :generate
t.pattern = "test/rdoc/rdoc_rubygems_hook_test.rb"
end

path = "pkg/#{Bundler::GemHelper.gemspec.full_name}"

package_parser_files = PARSER_FILES.map do |parser_file|
name = File.basename(parser_file, File.extname(parser_file))
_path = File.dirname(parser_file)
package_parser_file = "#{path}/#{name}.rb"
parsed_file = "#{_path}/#{name}.rb"

file package_parser_file => parsed_file # ensure copy runs before racc

package_parser_file
end

parsed_files = PARSER_FILES.map do |parser_file|
ext = File.extname(parser_file)
parsed_file = "#{parser_file.chomp(ext)}.rb"
Expand All @@ -68,28 +54,49 @@ parsed_files = PARSER_FILES.map do |parser_file|
puts "Generating #{parsed_file}..."
case ext
when '.ry' # need racc
racc = Gem.bin_path 'racc', 'racc'
rb_file = parser_file.gsub(/\.ry\z/, ".rb")
ruby "#{racc} -l -E -o #{rb_file} #{parser_file}"
sh "bundle exec racc -l -E -o #{rb_file} #{parser_file}"
File.open(rb_file, 'r+') do |f|
newtext = "# frozen_string_literal: true\n#{f.read}"
f.rewind
f.write newtext
end
when '.kpeg' # need kpeg
kpeg = Gem.bin_path 'kpeg', 'kpeg'
rb_file = parser_file.gsub(/\.kpeg\z/, ".rb")
ruby "#{kpeg} -fsv -o #{rb_file} #{parser_file}"
sh "bundle exec kpeg -fsv -o #{rb_file} #{parser_file}"
File.write(rb_file, File.read(rb_file).gsub(/ +$/, '')) # remove trailing spaces
end
end

parsed_file
end

task "#{path}.gem" => package_parser_files
RuboCop::RakeTask.new(:format_generated_files) do |t|
t.options = parsed_files + ["--config=.generated_files_rubocop.yml"]
end

desc "Generate all files used racc and kpeg"
task :generate => parsed_files
task generate: [*parsed_files, "format_generated_files:autocorrect"]

desc "Verify that generated parser files are up to date"
task verify_generated: :generate do
# Check if there are any uncommitted changes to the generated files
parsed_files.each do |file|
unless File.exist?(file)
abort "Generated file #{file} does not exist!"
end
end

diff_output = `git diff --exit-code #{parsed_files.join(' ')} 2>&1`
unless $?.success?
puts "Generated parser files are out of date!"
puts "Please run 'rake generate' and commit the changes."
puts "\nDifferences found:"
puts diff_output
exit 1
end
puts "Generated parser files are up to date."
end

task :clean do
parsed_files.each do |path|
Expand All @@ -106,16 +113,6 @@ namespace :build do
abort("Expected Ruby to be cloned under the same parent directory as RDoc to use this task")
end

mv("#{path}.gem", target)
end
end

begin
require 'rubocop/rake_task'
rescue LoadError
else
RuboCop::RakeTask.new(:format_generated_files) do |t|
t.options = parsed_files + ["--config=.generated_files_rubocop.yml"]
mv("pkg/#{Bundler::GemHelper.gemspec.full_name}.gem", target)
end
task :build => [:generate, "format_generated_files:autocorrect"]
end
Loading
Loading