Skip to content

Commit generated files #1410

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all 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}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general, sh("command", "arg1", "arg2", ...) is safer than sh("command line"):

Suggested change
sh "bundle exec 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}"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
sh "bundle exec 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:"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No argument puts may be more (a bit) readble than \n:

Suggested change
puts "\nDifferences found:"
puts
puts "Differences 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