26 lines (20 with data), 500 Bytes
#!/usr/bin/env ruby
require "finita"
require "optparse"
require "benchmark"
include Symbolic
include Finita
argv = ARGV.empty? ? ["-h"] : ARGV
OptionParser.new do |opts|
opts.banner = "Usage: finitac [options] input-file"
opts.on_tail("-h", "--help", "Show this message") do
puts opts
exit
end
opts.on_tail("--version", "Show version") do
puts Finita::Version
exit
end
end.parse!(argv)
eval(IO.read(argv[0]), binding, argv[0], 1)
Problem.problems.each {|p| p.process!}