From 4e9d8c3a8b2d14852dfdcd4f4e871c641c990a5f Mon Sep 17 00:00:00 2001 From: Zachary Scott Date: Tue, 15 Mar 2016 18:29:07 +0900 Subject: [PATCH 1/4] Add initial gemspec for building rdoc --- rdoc.gemspec | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 rdoc.gemspec diff --git a/rdoc.gemspec b/rdoc.gemspec new file mode 100644 index 0000000000..1839a5f71e --- /dev/null +++ b/rdoc.gemspec @@ -0,0 +1,64 @@ +# -*- encoding: utf-8 -*- +require_relative 'lib/rdoc' + +Gem::Specification.new do |s| + s.name = "rdoc" + s.version = RDoc::VERSION + + s.required_rubygems_version = Gem::Requirement.new(">= 1.3") if + s.respond_to? :required_rubygems_version= + + s.require_paths = ["lib"] + s.authors = [ + "Eric Hodel", + "Dave Thomas", + "Phil Hagelberg", + "Tony Strauss", + "Zachary Scott" + ] + + s.description = <<-DESCRIPTION +RDoc produces HTML and command-line documentation for Ruby projects. +RDoc includes the +rdoc+ and +ri+ tools for generating and displaying documentation from the command-line. + DESCRIPTION + + s.email = ["drbrain@segment7.net", "mail@zzak.io"] + + s.executables = ["rdoc", "ri"] + + s.extra_rdoc_files += %w[ + CVE-2013-0256.rdoc + CONTRIBUTING.rdoc + ExampleMarkdown.md + ExampleRDoc.rdoc + History.rdoc + LEGAL.rdoc + LICENSE.rdoc + README.rdoc + RI.rdoc + TODO.rdoc + ] + + s.files = File.readlines("Manifest.txt").map { |l| l.gsub("\n",'') } + + s.homepage = "http://docs.seattlerb.org/rdoc" + s.licenses = ["Ruby"] + s.post_install_message = <<-MESSAGE +Depending on your version of ruby, you may need to install ruby rdoc/ri data: + +<= 1.8.6 : unsupported + = 1.8.7 : gem install rdoc-data; rdoc-data --install + = 1.9.1 : gem install rdoc-data; rdoc-data --install +>= 1.9.2 : nothing to do! Yay! + MESSAGE + + s.rdoc_options = ["--main", "README.rdoc"] + s.required_ruby_version = Gem::Requirement.new(">= 1.8.7") + s.rubygems_version = "2.5.2" + s.summary = "RDoc produces HTML and command-line documentation for Ruby projects" + + s.add_runtime_dependency("json", "~> 1.4") + s.add_development_dependency("racc", "~> 1.4", "> 1.4.10") + s.add_development_dependency("kpeg", "~> 0.9") + s.add_development_dependency("minitest", "~> 4") +end From 4f36b5c2285d94e3e7cb577680a1d40345ecca1f Mon Sep 17 00:00:00 2001 From: Zachary Scott Date: Wed, 16 Mar 2016 13:24:43 +0900 Subject: [PATCH 2/4] Add build status icon to README --- README.rdoc | 1 + 1 file changed, 1 insertion(+) diff --git a/README.rdoc b/README.rdoc index a0f0c70fc0..983b45c692 100644 --- a/README.rdoc +++ b/README.rdoc @@ -3,6 +3,7 @@ home :: https://github.com/rdoc/rdoc rdoc :: http://docs.seattlerb.org/rdoc bugs :: https://github.com/rdoc/rdoc/issues +build status :: {Build Status}[https://travis-ci.org/rdoc/rdoc] code quality :: {code climate}[https://codeclimate.com/github/rdoc/rdoc] == Description From c43e5389f984dd521164ee2575fb327edd597b06 Mon Sep 17 00:00:00 2001 From: Zachary Scott Date: Sat, 19 Mar 2016 19:09:21 +0900 Subject: [PATCH 3/4] Replaced hoe plugins including for generating parsers with plain Ruby --- .gitignore | 1 + .travis.yml | 7 +-- Gemfile | 3 ++ Rakefile | 131 +++++++++++++++++---------------------------------- rdoc.gemspec | 1 + 5 files changed, 49 insertions(+), 94 deletions(-) create mode 100644 Gemfile diff --git a/.gitignore b/.gitignore index fa0558cb49..377d6327e4 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ /lib/rdoc/markdown.rb /pkg /tmp +Gemfile.lock diff --git a/.travis.yml b/.travis.yml index 45d7a48afc..e69188fa9a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,6 @@ --- -after_script: -- rake travis:after -t before_script: -- gem install hoe-travis --no-rdoc --no-ri -- rake travis:before -t +- gem install bundler --no-document language: ruby notifications: email: @@ -16,7 +13,7 @@ rvm: - 2.2.0 - ruby-head - rbx-2 -script: rake travis +script: rake matrix: allow_failures: - rvm: 1.8.7 diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000000..fa75df1563 --- /dev/null +++ b/Gemfile @@ -0,0 +1,3 @@ +source 'https://rubygems.org' + +gemspec diff --git a/Rakefile b/Rakefile index b673777ac2..f14f62fd39 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,7 @@ $:.unshift File.expand_path 'lib' require 'rdoc' -require 'hoe' +require 'bundler/gem_tasks' +require 'rake/testtask' ENV['BENCHMARK'] = 'yes' @@ -8,89 +9,20 @@ task :docs => :generate task :test => :generate PARSER_FILES = %w[ - lib/rdoc/rd/block_parser.rb - lib/rdoc/rd/inline_parser.rb - lib/rdoc/markdown.rb - lib/rdoc/markdown/literals_1_8.rb - lib/rdoc/markdown/literals_1_9.rb + lib/rdoc/rd/block_parser.ry + lib/rdoc/rd/inline_parser.ry + lib/rdoc/markdown.kpeg + lib/rdoc/markdown/literals_1_8.kpeg + lib/rdoc/markdown/literals_1_9.kpeg ] -Hoe.plugin :git -Hoe.plugin :kpeg -Hoe.plugin :minitest -Hoe.plugin :travis - $rdoc_rakefile = true -hoe = Hoe.spec 'rdoc' do - developer 'Eric Hodel', 'drbrain@segment7.net' - developer 'Dave Thomas', '' - developer 'Phil Hagelberg', 'technomancy@gmail.com' - developer 'Tony Strauss', 'tony.strauss@designingpatterns.com' - - self.rsync_args = '-avz' - rdoc_locations << 'docs.seattlerb.org:/data/www/docs.seattlerb.org/rdoc/' - rdoc_locations << 'drbrain@rubyforge.org:/var/www/gforge-projects/rdoc/' - - spec_extras[:post_install_message] = <<-MESSAGE -Depending on your version of ruby, you may need to install ruby rdoc/ri data: - -<= 1.8.6 : unsupported - = 1.8.7 : gem install rdoc-data; rdoc-data --install - = 1.9.1 : gem install rdoc-data; rdoc-data --install ->= 1.9.2 : nothing to do! Yay! - MESSAGE - - self.licenses << 'Ruby' - self.readme_file = 'README.rdoc' - self.history_file = 'History.rdoc' - self.testlib = :minitest - self.extra_rdoc_files += %w[ - CVE-2013-0256.rdoc - CONTRIBUTING.rdoc - ExampleMarkdown.md - ExampleRDoc.rdoc - History.rdoc - LEGAL.rdoc - LICENSE.rdoc - README.rdoc - RI.rdoc - TODO.rdoc - ] - - self.clean_globs += PARSER_FILES - self.kpeg_flags = '-fsv' if self.respond_to? :kpeg_flags= # no plugin - - require_ruby_version '>= 1.8.7' - extra_deps << ['json', '~> 1.4'] - extra_dev_deps << ['racc', '~> 1.4', '> 1.4.10'] - extra_dev_deps << ['minitest', '~> 4'] - - extra_rdoc_files << 'Rakefile' - spec_extras['required_rubygems_version'] = '>= 1.3' - spec_extras['homepage'] = 'http://docs.seattlerb.org/rdoc' -end - -hoe.test_prelude = 'gem "minitest", "~> 4.0"' - def rake(*args) sh $0, *args end -need_racc = PARSER_FILES.any? do |rb_file| - ry_file = rb_file.gsub(/\.rb\z/, ".ry") - not File.exist?(rb_file) or - (File.exist?(ry_file) and File.mtime(rb_file) < File.mtime(ry_file)) -end - -if need_racc - Rake::Task["default"].prerequisites.clear - task :default do - rake "check_extra_deps" - rake "install_plugins" - rake "newb" - end -end +task :default => :test Rake::Task['docs'].actions.clear task :docs do @@ -107,28 +39,49 @@ task :docs do RDoc::RDoc.new.document options end -# requires ruby 1.8 and ruby 1.8 to build -hoe.clean_globs -= PARSER_FILES.grep(/literals_/) +Rake::TestTask.new(:test) do |t| + t.libs << "test" + t.libs << "lib" + t.test_files = FileList['test/**/test_*.rb'] +end -task :generate => :isolate -task :generate => PARSER_FILES -task :check_manifest => :generate +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" -rule '.rb' => '.ry' do |t| - racc = Gem.bin_path 'racc', 'racc' + file package_parser_file => parsed_file # ensure copy runs before racc - ruby "-rubygems #{racc} -l -o #{t.name} #{t.source}" + package_parser_file end -path = "pkg/#{hoe.spec.full_name}" +parsed_files = PARSER_FILES.map do |parser_file| + name = File.basename(parser_file, File.extname(parser_file)) + _path = File.dirname(parser_file) + parsed_file = "#{_path}/#{name}.rb" + + file parsed_file do |t| + puts "Generating #{parsed_file}..." + if parser_file =~ /\.ry\z/ # need racc + racc = Gem.bin_path 'racc', 'racc' + rb_file = parser_file.gsub(/\.ry\z/, ".rb") + ruby "-rubygems #{racc} -l -o #{rb_file} #{parser_file}" + elsif parser_file =~ /\.kpeg\z/ # need kpeg + kpeg = Gem.bin_path 'kpeg', 'kpeg' + rb_file = parser_file.gsub(/\.kpeg\z/, ".rb") + ruby "-rubygems #{kpeg} -fsv -o #{rb_file} #{parser_file}" + end + end -package_parser_files = PARSER_FILES.map do |parser_file| - package_parser_file = "#{path}/#{parser_file}" - file package_parser_file => parser_file # ensure copy runs before racc - package_parser_file + parsed_file end task "#{path}.gem" => package_parser_files +task :generate => parsed_files +task :check_manifest => :generate # These tasks expect to have the following directory structure: # diff --git a/rdoc.gemspec b/rdoc.gemspec index 1839a5f71e..8135b840bc 100644 --- a/rdoc.gemspec +++ b/rdoc.gemspec @@ -58,6 +58,7 @@ Depending on your version of ruby, you may need to install ruby rdoc/ri data: s.summary = "RDoc produces HTML and command-line documentation for Ruby projects" s.add_runtime_dependency("json", "~> 1.4") + s.add_development_dependency("rake", "~> 10.5") s.add_development_dependency("racc", "~> 1.4", "> 1.4.10") s.add_development_dependency("kpeg", "~> 0.9") s.add_development_dependency("minitest", "~> 4") From 4512e069a9f3436b88e95466df4e3adda7d12049 Mon Sep 17 00:00:00 2001 From: Zachary Scott Date: Sat, 19 Mar 2016 19:30:52 +0900 Subject: [PATCH 4/4] Fix travis failures :bomb: --- .travis.yml | 18 +++++++++--------- rdoc.gemspec | 3 ++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index e69188fa9a..b65ccf378b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,18 +1,18 @@ --- -before_script: -- gem install bundler --no-document +before_install: + - gem install bundler --no-document language: ruby notifications: email: - mail@zzak.io rvm: -- 1.8.7 -- 1.9.3 -- 2.0.0 -- 2.1.0 -- 2.2.0 -- ruby-head -- rbx-2 + - 1.8.7 + - 1.9.3 + - 2.0.0 + - 2.1.0 + - 2.2.0 + - ruby-head + - rbx-2 script: rake matrix: allow_failures: diff --git a/rdoc.gemspec b/rdoc.gemspec index 8135b840bc..5eb84cac52 100644 --- a/rdoc.gemspec +++ b/rdoc.gemspec @@ -1,5 +1,6 @@ # -*- encoding: utf-8 -*- -require_relative 'lib/rdoc' +$:.push File.expand_path("../lib", __FILE__) +require 'rdoc' Gem::Specification.new do |s| s.name = "rdoc"