bin/code in code-ruby-0.7.1 vs bin/code in code-ruby-0.7.2

- old
+ new

@@ -2,34 +2,41 @@ # frozen_string_literal: true require 'optparse' require_relative '../lib/code-ruby' -options = { timeout: 0, profile: false, profiler: 'text' } +options = { + timeout: 0, + profile: false, + profiler: 'text', + input: "", + context: "", + parse: false +} OptionParser .new do |opts| - opts.banner = 'Usage: template [options]' + opts.banner = 'Usage: code [options]' opts.on('-v', '--version', 'Version of template') do |_input| puts Code::Version exit end opts.on( '-i INPUT', - '--input=INPUT', + '--input INPUT', 'Input in the code language (String or File)' ) do |input| input = File.read(input) if File.exist?(input) options[:input] = input end opts.on( '-c CONTEXT', - '--context=CONTEXT', + '--context CONTEXT', 'Context in the code language (String or File)' ) do |context| context = File.read(context) if File.exist?(context) options[:context] = context @@ -39,11 +46,11 @@ options[:parse] = parse end opts.on( '-t TIMEOUT', - '--timeout=TIMEOUT', + '--timeout TIMEOUT', 'Set timeout in seconds' ) { |timeout| options[:timeout] = timeout.to_f } opts.on('--profile', 'Profile Ruby code') do |_timeout| require 'ruby-prof' @@ -59,22 +66,26 @@ options[:profiler] = profiler end end .parse! -input = options.fetch(:input, '') -context = options.fetch(:context, '') - RubyProf.start if options[:profile] if options[:parse] - pp Code::Parser.parse(input).to_raw + pp Code::Parser.parse(options[:input]).to_raw else - print Code.evaluate(input, context, io: $stdout, timeout: options[:timeout]) + print Code.evaluate( + options[:input], + options[:context], + output: $stdout, + error: $stderr, + timeout: options[:timeout] + ) end if options[:profile] result = RubyProf.stop + if options[:profiler] == 'text' printer = RubyProf::FlatPrinter.new(result) printer.print($stdout) elsif options[:profiler] == 'html' printer = RubyProf::GraphHtmlPrinter.new(result)