-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrunner.rb
More file actions
executable file
·70 lines (60 loc) · 1.56 KB
/
runner.rb
File metadata and controls
executable file
·70 lines (60 loc) · 1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/usr/bin/env ruby
require 'optparse'
require 'fileutils'
def compile(problem, language)
case language
when 'java'
FileUtils.remove_dir 'build/classes' if File.exists? 'build/classes'
FileUtils.mkdir_p 'build/classes'
system "javac -sourcepath common/java:#{problem}/java -d build/classes #{problem}/java/Test.java"
else
puts 'Not supported language: ' + language
end
end
def test(problem, language)
case language
when 'java'
system "java -cp build/classes Test"
else
puts 'Not supported language: ' + language
end
end
def run(options)
if options[:test] != nil
compile(options[:test], options[:language])
test(options[:test], options[:language])
elsif options[:compile] != nil
compile(options[:compile], options[:language])
else
puts "Run 'runner -h' for help"
end
end
options = {}
optparser = OptionParser.new do |opts|
opts.on('-c', '--compile PROBLEM', 'compile problem') do |value|
options[:compile] = value
end
opts.on('-t', '--test PROBLEM', 'test problem') do |value|
options[:test] = value
end
opts.on('-l', '--language LANGUAGE', 'set language') do |value|
options[:language] = value
end
end
begin
optparser.parse!
if options[:language].nil?
puts "Missing option: language"
puts optparser
exit
elsif options[:compile].nil? and options[:test].nil?
puts "Missing option: compile or test"
puts optparser
exit
end
rescue OptionParser::InvalidOption, OptionParser::MissingArgument
puts $!.to_s
puts optparser
exit
end
run(options)