bin/earl-report in earl-report-0.0.3 vs bin/earl-report in earl-report-0.1.0

- old
+ new

@@ -2,28 +2,36 @@ require 'rubygems' $:.unshift(File.expand_path(File.join(File.dirname(__FILE__), "..", 'lib'))) require 'earl_report' require 'getoptlong' +require 'yaml' def run(input, options) end OPT_ARGS = [ + ["--base", GetoptLong::REQUIRED_ARGUMENT,"Base URI to use when loading test manifest"], ["--bibRef", GetoptLong::REQUIRED_ARGUMENT,"ReSpec BibRef of specification being reported upon"], ["--format", "-f", GetoptLong::REQUIRED_ARGUMENT,"Format of output, one of 'ttl', 'json', or 'html'"], ["--json", GetoptLong::NO_ARGUMENT, "Input is a JSON-LD formatted result"], + ["--manifest", GetoptLong::REQUIRED_ARGUMENT,"Test manifest"], ["--name", GetoptLong::REQUIRED_ARGUMENT,"Name of specification"], ["--output", "-o", GetoptLong::REQUIRED_ARGUMENT,"Output report to file"], + ["--query", GetoptLong::REQUIRED_ARGUMENT,"Query, or file containing query for extracting information from Test manifest"], + ["--rc", GetoptLong::NO_ARGUMENT, "Write options to run-control file"], ["--template", GetoptLong::OPTIONAL_ARGUMENT,"Specify or return default report template"], ["--verbose", GetoptLong::NO_ARGUMENT, "Detail on execution"], ["--help", "-?", GetoptLong::NO_ARGUMENT, "This message"] ] def usage STDERR.puts %{ Generate EARL report for mutliple test results against a test manifest. + Options are initialized by reading optional run-control file '.earl' in the local directory, + if it exists. + Usage: #{$0} [options] test-manifest test-result ... }.gsub(/^ /, '') width = OPT_ARGS.map do |o| l = o.first.length l += o[1].length + 2 if o[1].is_a?(String) @@ -40,29 +48,49 @@ opts = GetoptLong.new(*OPT_ARGS.map {|o| o[0..-2]}) options = { :format => :html, :io => STDOUT} +options.merge!(YAML.load(File.open ".earl")) if File.exist?(".earl") opts.each do |opt, arg| case opt + when '--base' then options[:base] = arg when '--bibRef' then options[:bibRef] = arg when '--format' then options[:format] = arg.to_sym + when '--manifest' then options[:manifest] = arg + when '--query' then options[:manifest] = arg + when '--base' then options[:base] = arg + when '--json' then options[:json] = true when '--name' then options[:name] = arg when '--output' then options[:io] = File.open(arg, "w") + when '--rc' then options[:rc] = true when '--template' then options[:template] = arg when '--verbose' then options[:verbose] = true when '--help' then usage else options[opt.to_sym] = arg end end +# Replace query from a specified file, with the query itself +if options.has_key?(:query) && File.exist?(options[:query]) + options[:query] = File.read(options[:query]) +end + +# Write run-control file to output +if options.has_key?(:rc) + io = options.delete(:io) || STDOUT + options.delete_if {|k, v| [:rc, :json, :output, :verbose].include?(k)} + io.puts options.to_yaml + exit 0 +end + # If requesting template, just return it if options.has_key?(:template) && options[:template].empty? File.open(File.expand_path("../../lib/earl_report/views/earl_report.html.haml", __FILE__)) do |f| options[:io].write(f.read) end else earl = EarlReport.new(*ARGV, options) - earl.generate(options.merge(:source_files => ARGV)) + earl.generate(options) end