#!/usr/bin/env ruby
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))

require 'mach5-tools'
require 'thor'

class App < Thor
  desc "benchmark", "Run benchmarks"
  method_option :all, :type => :boolean, :aliases => "-a", :desc => "Run all benchmarks even if there is already a result"
  method_option :list, :type => :boolean, :aliases => "-l", :desc => "List all available benchmarks"
  method_option :only, :type => :array, :aliases => "-o", :desc => "Run only the specified benchmarks"
  def benchmark
    runner = Mach5::Runner.new(eval(File.open("Mach5file").readlines.join))
    if options.list
      runner.list_benchmarks.each do |benchmark|
        puts benchmark
      end
    elsif options.only
      runner.benchmark(only: options.only)
    else
      runner.benchmark(all: options.all)
    end
  end

  default_task :benchmark
end

App.start