class Contest::Driver::DriverBase

Attributes

args[R]
config[RW]
options[RW]

Public Class Methods

new(new_args = []) click to toggle source
Calls superclass method
# File lib/contest/driver/base.rb, line 22
def initialize(new_args = [])
  @args = new_args.clone
  # submit options
  @options ||= {}
  # site config
  @config ||= {}
  @config["file"] ||= {}
  @config["submit_rules"] ||= {}
  # call DriverEvent#initialize
  super()
  initialize_ext
end

Public Instance Methods

define_options(&block) click to toggle source
# File lib/contest/driver/base.rb, line 72
def define_options &block
  @blocks ||= []
  @blocks.push(block)
end
get_commit_message(status) click to toggle source
# File lib/contest/driver/base.rb, line 112
def get_commit_message status
  if @options[:message].nil?
    message = @config["submit_rules"]["message"] || DEFAULT_COMMIT_MESSAGE
    message = message.gsub '${site}', get_site_name
    message = message.gsub '${problem-id}', get_problem_id(options)
    message = message.gsub '${status}', status
    message = "\n#{get_commit_message_ext}" unless get_commit_message_ext.nil?
  else
    message = @options[:message]
  end
  message
end
get_commit_message_ext() click to toggle source
# File lib/contest/driver/base.rb, line 108
def get_commit_message_ext
  nil
end
get_desc() click to toggle source
# File lib/contest/driver/base.rb, line 68
def get_desc
  ''
end
get_opts() click to toggle source
# File lib/contest/driver/base.rb, line 77
def get_opts
  get_opts_ext()
  define_options do
    opt(
      :source,
      "Specify submitted code (Ex: main.cpp)",
      :type => :string,
      :required => false,
    )
    opt(
      :language,
      "Specify programming language (Ex: C++, Java or etc...)",
      :type => :string,
      :required => false,
    )
    opt(
      :message,
      "Set git-commit message",
      :type => :string,
      :required => false,
    )
  end
  Trollop::options args, @blocks do |blocks|
    version "git-contest driver"
    # set driver options
    blocks.each do |b|
      instance_eval &b
    end
  end
end
get_opts_ext() click to toggle source
# File lib/contest/driver/base.rb, line 39
def get_opts_ext
  # Example:
  # define_options do
  #   opt(
  #     :problem_id,
  #     "Problem ID (Ex: 1000, 123, 0123, etc...)",
  #     :type => :string,
  #     :required => true,
  #   )
  # end
  raise 'TODO: Implement'
end
get_problem_id(options) click to toggle source
# File lib/contest/driver/base.rb, line 56
def get_problem_id(options)
  raise 'TODO: Implement'
end
get_site_name() click to toggle source
# File lib/contest/driver/base.rb, line 52
def get_site_name
  raise 'TODO: Implement'
end
initialize_ext() click to toggle source
# File lib/contest/driver/base.rb, line 35
def initialize_ext
  nil
end
resolve_language(label) click to toggle source
# File lib/contest/driver/base.rb, line 60
def resolve_language(label)
  raise 'TODO: Implement'
end
submit() click to toggle source

submit a solution

# File lib/contest/driver/base.rb, line 126
def submit
  @options[:source] = Utils.resolve_path(
    @options[:source] || @config["submit_rules"]["source"] || DEFAULT_SOURCE_PATH
  )
  if Utils.check_file_map(@options[:source], @config["file"]["ext"])
    @options[:language] ||= Utils.resolve_file_map(@options[:source], @config["file"]["ext"])
  else
    @options[:language] ||= Utils.resolve_language(@options[:source])
  end
  @options[:language] = resolve_language Utils.normalize_language(@options[:language])

  submit_ext()
end
submit_ext(config, source_path, options) click to toggle source
# File lib/contest/driver/base.rb, line 64
def submit_ext(config, source_path, options)
  raise 'TODO: Implement'
end