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/bin/cm b/bin/cm index 69926540d..daa06c03e 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) @@ -34,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) diff --git a/docurium.gemspec b/docurium.gemspec index d64e5f316..1097a92c2 100644 --- a/docurium.gemspec +++ b/docurium.gemspec @@ -14,14 +14,15 @@ 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.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/lib/docurium.rb b/lib/docurium.rb index 16105896b..f8ad66160 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') @@ -119,12 +119,22 @@ 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' + # 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 = {} 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) 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) 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 cf7e62a22..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 @@ -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 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