From 1bfe43b0f4f942f895581d3aafb5821b26d32591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 18 Feb 2019 16:29:06 +0100 Subject: [PATCH 1/7] Update dependencies We no longer need the source version of ffi-clang; update some others. --- Gemfile | 4 +--- docurium.gemspec | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index 1a4b396ea..289d343da 100644 --- a/Gemfile +++ b/Gemfile @@ -1,11 +1,9 @@ source "http://rubygems.org" platforms :rbx do - gem 'rubysl', '~> 2.0' + gem 'rubysl', '~> 2.2' end gemspec -gem 'ffi-clang', :git => 'https://github.com/ioquatix/ffi-clang.git' - # vim:ft=ruby diff --git a/docurium.gemspec b/docurium.gemspec index d64e5f316..491f47f2b 100644 --- a/docurium.gemspec +++ b/docurium.gemspec @@ -14,14 +14,14 @@ Gem::Specification.new do |s| s.license = 'MIT' s.add_dependency "version_sorter", "~>2.0" - s.add_dependency "mustache", "~> 0.99" + s.add_dependency "mustache", "~> 1.1" s.add_dependency "rocco", "~>0.8" s.add_dependency "gli", "~>2.5" s.add_dependency "rugged", "~>0.21" s.add_dependency "redcarpet", "~>3.0" - s.add_dependency "ffi-clang", "~> 0.2" + s.add_dependency "ffi-clang", "~> 0.5" s.add_development_dependency "bundler", "~>1.0" - s.add_development_dependency "rake", "~> 10.1" + s.add_development_dependency "rake", "~> 12" s.files = `git ls-files`.split("\n") s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") From f2aa34c131af8dcfd0f3db2c2151c3964cf103f5 Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Thu, 22 Mar 2018 23:10:11 +0100 Subject: [PATCH 2/7] Allow restricting the version to build --- bin/cm | 1 + lib/docurium.rb | 3 ++- lib/docurium/cli.rb | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bin/cm b/bin/cm index 69926540d..c6fa6b2f6 100755 --- a/bin/cm +++ b/bin/cm @@ -13,6 +13,7 @@ version Docurium::Version desc 'Generate HTML documentation' long_desc 'Generate HTML docs from a Docurium config file' command :doc do |c| + c.flag :for, :desc => "The version to generate", :multiple => true c.action do |global_options,options,args| file = args.first Docurium::CLI.doc(file, options) diff --git a/lib/docurium.rb b/lib/docurium.rb index 16105896b..800fc81e0 100644 --- a/lib/docurium.rb +++ b/lib/docurium.rb @@ -119,12 +119,13 @@ def generate_doc_for(version) data end - def generate_docs + def generate_docs(options) output_index = Rugged::Index.new write_site(output_index) @tf = File.expand_path(File.join(File.dirname(__FILE__), 'docurium', 'layout.mustache')) versions = get_versions versions << 'HEAD' + versions = versions & options[:for] unless options[:for].empty? nversions = versions.size output = Queue.new pipes = {} diff --git a/lib/docurium/cli.rb b/lib/docurium/cli.rb index 38233ba11..c3d063956 100644 --- a/lib/docurium/cli.rb +++ b/lib/docurium/cli.rb @@ -3,7 +3,7 @@ class CLI def self.doc(idir, options) doc = Docurium.new(idir) - doc.generate_docs + doc.generate_docs(options) end def self.gen(file) From 0774fb6aa98971e77ab3bbbf3b410188ee5d732b Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Thu, 22 Mar 2018 23:10:24 +0100 Subject: [PATCH 3/7] Use the config_file as the starting point for repo discovery --- lib/docurium.rb | 2 +- test/gen_test.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/docurium.rb b/lib/docurium.rb index 800fc81e0..71b1adb2f 100644 --- a/lib/docurium.rb +++ b/lib/docurium.rb @@ -23,7 +23,7 @@ def initialize(config_file, repo = nil) raise "You need to specify a config file" if !config_file raise "You need to specify a valid config file" if !valid_config(config_file) @sigs = {} - @repo = repo || Rugged::Repository.discover('.') + @repo = repo || Rugged::Repository.discover(config_file) end def init_data(version = 'HEAD') diff --git a/test/gen_test.rb b/test/gen_test.rb index cf7e62a22..eae75dd93 100644 --- a/test/gen_test.rb +++ b/test/gen_test.rb @@ -12,7 +12,7 @@ def test_read_generated_file Docurium::CLI.gen(file.path) end - Docurium.new file.path + assert_raises(Rugged::RepositoryError) { Docurium.new file.path } end end From e9d137f1fbe1ba41286f4a9ae4bb3cfd22e31663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 18 Feb 2019 17:16:39 +0100 Subject: [PATCH 4/7] Do not print a backtrace for SystemExit We throw this whenever `exit` is used so it's not an uncaught error but just a quirk of ruby. --- bin/cm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/bin/cm b/bin/cm index c6fa6b2f6..daa06c03e 100755 --- a/bin/cm +++ b/bin/cm @@ -35,8 +35,10 @@ pre { |global,command,options,args| true } post { |global,command,options,args| true } on_error do |exception| - puts exception - puts exception.backtrace + if !exception.is_a?(SystemExit) + puts exception + puts exception.backtrace + end end exit run(ARGV) From e640f4f28bf904bf03164f6ae00999e1ecb29cc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 18 Feb 2019 17:17:24 +0100 Subject: [PATCH 5/7] Validate the user-specified versions to generate We allow specifying which versions we want to generate, but without validation, we would end up with an empty list, which is not what the user meant if they mistyped a version. --- lib/docurium.rb | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/docurium.rb b/lib/docurium.rb index 71b1adb2f..f8ad66160 100644 --- a/lib/docurium.rb +++ b/lib/docurium.rb @@ -125,7 +125,16 @@ def generate_docs(options) @tf = File.expand_path(File.join(File.dirname(__FILE__), 'docurium', 'layout.mustache')) versions = get_versions versions << 'HEAD' - versions = versions & options[:for] unless options[:for].empty? + # If the user specified versions, validate them and overwrite + if !(vers = options[:for]).empty? + vers.each do |v| + next if versions.include?(v) + puts "Unknown version #{v}" + exit(false) + end + versions = vers + end + nversions = versions.size output = Queue.new pipes = {} From 8372079c33c6a1e41e9d498a286c43b2625922e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 18 Feb 2019 17:32:50 +0100 Subject: [PATCH 6/7] Use non-deprecated exist? --- lib/docurium/docparser.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/docurium/docparser.rb b/lib/docurium/docparser.rb index 3aee80a9b..fd50fec02 100644 --- a/lib/docurium/docparser.rb +++ b/lib/docurium/docparser.rb @@ -18,7 +18,7 @@ def parse_file(orig_filename, files) unsaved = files.map do |name, contents| full_path = File.join(tmpdir, name) dirname = File.dirname(full_path) - FileUtils.mkdir_p(dirname) unless Dir.exists? dirname + FileUtils.mkdir_p(dirname) unless Dir.exist? dirname File.new(full_path, File::CREAT).close() UnsavedFile.new(full_path, contents) From dde346630e192311ad40f4e5ccff311f75699d5e Mon Sep 17 00:00:00 2001 From: Etienne Samson Date: Thu, 22 Mar 2018 23:10:02 +0100 Subject: [PATCH 7/7] Add minitest as a dependency and upgrade tests --- docurium.gemspec | 1 + test/{repo_test.rb => docurium_test.rb} | 2 +- test/gen_test.rb | 2 +- test/parser_test.rb | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) rename test/{repo_test.rb => docurium_test.rb} (99%) diff --git a/docurium.gemspec b/docurium.gemspec index 491f47f2b..1097a92c2 100644 --- a/docurium.gemspec +++ b/docurium.gemspec @@ -22,6 +22,7 @@ Gem::Specification.new do |s| s.add_dependency "ffi-clang", "~> 0.5" s.add_development_dependency "bundler", "~>1.0" s.add_development_dependency "rake", "~> 12" + s.add_development_dependency "minitest", "~> 5.11" s.files = `git ls-files`.split("\n") s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") diff --git a/test/repo_test.rb b/test/docurium_test.rb similarity index 99% rename from test/repo_test.rb rename to test/docurium_test.rb index ae515fdfa..1a8e57c8c 100644 --- a/test/repo_test.rb +++ b/test/docurium_test.rb @@ -2,7 +2,7 @@ require 'docurium' require 'rugged' -class DocuriumTest < MiniTest::Unit::TestCase +class DocuriumTest < Minitest::Test def setup @dir = Dir.mktmpdir() diff --git a/test/gen_test.rb b/test/gen_test.rb index eae75dd93..260d64a52 100644 --- a/test/gen_test.rb +++ b/test/gen_test.rb @@ -3,7 +3,7 @@ require 'docurium/cli' require 'tempfile' -class GenTest < MiniTest::Unit::TestCase +class GenTest < Minitest::Test # make sure we can read what we give the user def test_read_generated_file diff --git a/test/parser_test.rb b/test/parser_test.rb index 16db74616..560cfdd54 100644 --- a/test/parser_test.rb +++ b/test/parser_test.rb @@ -2,7 +2,7 @@ require 'docurium' require 'pp' -class TestParser < Minitest::Unit::TestCase +class ParserTest < Minitest::Test def setup @parser = Docurium::DocParser.new