Module: Omega::CLI::Contest

Included in:
Omega::CLI
Defined in:
lib/omega/cli/contest.rb

Instance Method Summary collapse

Instance Method Details

#add_problem(contest_name, problem_name) ⇒ Object



54
55
56
57
58
59
# File 'lib/omega/cli/contest.rb', line 54

def add_problem(contest_name, problem_name)
  contest = omega.contest(contest_name)
  contest.add_problem(problem_name)
rescue StandardError => e
  puts "Error adding #{problem_name}: #{e.message}"
end

#clarifications(contest_name, filter_open) ⇒ Object



41
42
43
44
45
# File 'lib/omega/cli/contest.rb', line 41

def clarifications(contest_name, filter_open)
  clarifications = omega.clarifications(contest_name)
  clarifications.select! { |clar| clar[:answer].nil? || clar[:answer].empty? } if filter_open
  puts clarifications.to_yaml
end

#copy_problems(contest_name, from) ⇒ Object



61
62
63
64
65
66
67
68
69
# File 'lib/omega/cli/contest.rb', line 61

def copy_problems(contest_name, from)
  contest = omega.contest(contest_name)
  source = omega.contest(from)
  source.problems.each do |problem|
    contest.add_problem(problem[:alias])
  rescue StandardError => e
    puts "Error adding #{problem[:alias]}: #{e.message}"
  end
end

#copy_users(contest, from) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/omega/cli/contest.rb', line 27

def copy_users(contest, from)
  target = omega.contest(contest)
  source = omega.contest(from)
  source.users.each do |user|
    target.add_user(user)
  rescue StandardError => e
    puts "Error adding #{user}: #{e.message}"
  end
end

#download_sources(contest_name, path) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/omega/cli/contest.rb', line 71

def download_sources(contest_name, path)
  Dir.mkdir(path) unless File.directory?(path)
  contest = omega.contest(contest_name)
  contest.all_sources.each do |source|
    source.save_at(path)
  end
end

#register_user(contest_name, user) ⇒ Object



6
7
8
9
10
11
# File 'lib/omega/cli/contest.rb', line 6

def register_user(contest_name, user)
  contest = omega.contest(contest_name)
  puts contest.add_user(user)[:status]
rescue StandardError => e
  puts "Error adding #{user}: #{e.message}"
end

#register_users(contest_name, user_file) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/omega/cli/contest.rb', line 13

def register_users(contest_name, user_file)
  users = File.readlines(user_file).map(&:strip)
  contest = omega.contest(contest_name)
  failed = []
  users.each do |user|
    puts "Adding #{user}..."
    contest.add_user(user)
  rescue StandardError => e
    puts "Error adding #{user}: #{e.message}"
    failed << user
  end
  puts "Failed users: \n- #{failed.join("\n- ")}"
end

#scoreboard(contest_name) ⇒ Object



47
48
49
50
51
52
# File 'lib/omega/cli/contest.rb', line 47

def scoreboard(contest_name)
  score = omega.scoreboard(contest_name)
  score.simple_display.each_with_index { |s, i| puts "#{i + 1}.- #{s.values.join(': ')}" }
rescue StandardError => e
  puts "#{contest_name}: #{e.message}"
end

#user_data(user) ⇒ Object



37
38
39
# File 'lib/omega/cli/contest.rb', line 37

def user_data(user)
  puts omega.user(user).full_data.to_yaml
end