class CommandLine::SubCommands::SubmitCommand
Public Class Methods
new(new_args, new_input_stream = STDIN)
click to toggle source
Calls superclass method
CommandLine::Command::new
# File lib/git/contest/command_line/sub_commands/submit_command.rb, line 15 def initialize(new_args, new_input_stream = STDIN) super # load sites $config = get_config() || {} $sites = {} if $config.has_key? 'sites' $sites = $config["sites"] end # load drivers Contest::Driver::Utils.load_plugins $drivers = {} load_drivers end
Public Instance Methods
define_options()
click to toggle source
# File lib/git/contest/command_line/sub_commands/submit_command.rb, line 32 def define_options opt_parser.on "-h", "--help", "help" do usage exit 0 end end
run()
click to toggle source
# File lib/git/contest/command_line/sub_commands/submit_command.rb, line 42 def run # check options sub_commands = $sites.keys # detect site unless has_next_token? usage exit 0 end site = next_token.strip unless $sites.has_key?(site) if site != "" puts "site not found" else usage end exit 0 end # detect driver driver_name = $sites[site]["driver"] unless $drivers.has_key?(driver_name) puts "driver not found" exit end # # Submit Start # driver = $drivers[driver_name].new(args) $submit_info = {} # set events driver.on( 'start', Proc.new do puts "@start: submit" end ) driver.on( 'before_login', Proc.new do puts "@submit: logging in..." end ) driver.on( 'after_login', Proc.new do puts "@submit: login ok" end ) driver.on( 'before_submit', Proc.new do |submit_info| $submit_info = submit_info puts "@submit: doing..." end ) driver.on( 'after_submit', Proc.new do puts "@submit: done" end ) driver.on( 'before_wait', Proc.new do print "@result: waiting..." end ) driver.on( 'retry', Proc.new do print "." end ) driver.on( 'after_wait', Proc.new do |submission_info| puts "" next unless submission_info.is_a?(Hash) puts "" puts "@result: Submission Result" puts " %s: %s" % ["submission id", "#{submission_info[:submission_id]}"] puts " %s: %s" % ["status", "#{submission_info[:status]}"] puts "" if Git.contest_is_initialized puts "@commit" Git.do "add #{get_git_add_target($config["submit_rules"]["add"] || ".")}" Git.do "commit --allow-empty -m \"#{submission_info[:result]}\"" end end ) driver.on( 'finish', Proc.new do puts "@finish" end ) # global config $config["submit_rules"] ||= {} $config["file"] ||= {} # set config driver.config = $sites[site] driver.config.merge! $config # parse driver options driver.options = driver.get_opts() result = driver.submit() end
set_default_options()
click to toggle source
# File lib/git/contest/command_line/sub_commands/submit_command.rb, line 39 def set_default_options end
Private Instance Methods
get_git_add_target(rule)
click to toggle source
# File lib/git/contest/command_line/sub_commands/submit_command.rb, line 210 def get_git_add_target rule str = rule str = str.gsub('${source}', $submit_info[:source]) str end
load_drivers()
click to toggle source
Load Drivers
# File lib/git/contest/command_line/sub_commands/submit_command.rb, line 174 def load_drivers driver_names = $sites.keys().map {|key| $sites[key]["driver"] } driver_names.uniq.each do |driver_name| class_name = driver_name.clone class_name.gsub!(/^[a-z]/) {|c| c.upcase } class_name.gsub!(/(_)([a-z])/) {|c, b| $2.upcase } $drivers[driver_name] = Contest::Driver.const_get "#{class_name}Driver" end end
usage()
click to toggle source
Command
Utils
# File lib/git/contest/command_line/sub_commands/submit_command.rb, line 187 def usage puts get_banner return 0 end