class Selective::Ruby::Core::Init

def self.run(args)

def self.run(args)
  new(args).send(:run)
end

def initialize(args)

def initialize(args)
  @debug = !args.delete("--debug").nil?
  @log = !args.delete("--log").nil?
  @runner_name, @args, @command = parse_args(args)
  require_runner
end

def parse_args(args)

def parse_args(args)
  # Returns runner_name, args, command
  if args[0] == "exec" # e.g. selective exec rspec
    [args[1], args[2..], :exec]
  else # e.g. selective rspec
    [args[0], args[1..], :start]
  end
end

def require_runner

def require_runner
  require "selective-ruby-#{runner_name}"
rescue LoadError
  nil
end

def run

def run
  Selective::Ruby::Core::Controller.new(runner_class, args, debug: debug, log: log).send(command)
end

def runner_class

def runner_class
  Selective::Ruby::Core.runner_for(runner_name)
end