omegaup 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 444fc13885fc5e35380254f0b820c54d3fe2134f5f271e3b420e9245acf84d03
4
- data.tar.gz: cd81162a29dc5d7ceeedffefca870c37c4260d425bd5ba61431d0352425a3f3a
3
+ metadata.gz: de5fc0741a09e56d1c27cb5af631d3b966d7e2141e412174ec1975dbf8c87cf9
4
+ data.tar.gz: a70008f5e26bc8927b00fa925188c2e76e3a8497835021731dd0d54d02d8506c
5
5
  SHA512:
6
- metadata.gz: c98905259ad2bfb854142e4be40226417586edaada2da806916dfa1446f16a8bfae18bd619a47c6707fcba4e32f80888a99d12903f10a9011cefe74443a78bee
7
- data.tar.gz: cd133c92f5fb7332fc90c371227459c6d3a488a2456700036cca833c3eb9bb1a100dd7cf7686b893471d1db568fb66860ead28f8e3b769714167cd43fdd43b7d
6
+ metadata.gz: 6f970627e3fcf17db767d1dd7613f4e566b879a644bbb589815614cae11496afd1bff06664a0bb6b1f91c1fecb0bda023b9c8ea0d6daf3d665c132f780792e9f
7
+ data.tar.gz: dae56c4d719e2af83459fee4510a73dce522f272540e1f43b98b7cc40378fd4532f205f4f621c97f74e704bcb01f0d884c4de610e46336cb3af90bfa05568a5c
data/.rubocop.yml CHANGED
@@ -1,3 +1,7 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.7
3
3
  NewCops: enable
4
+ Gemspec/RequiredRubyVersion:
5
+ Enabled: false
6
+ Style/Documentation:
7
+ Enabled: false
data/lib/omega/cli.rb CHANGED
@@ -19,30 +19,32 @@ module Omega
19
19
  help
20
20
  ].freeze
21
21
 
22
- def print_help
23
- puts %(
22
+ GENERAL_DOC = %(
24
23
  OmegaUp CLI. Developed by OMIJal https://github.com/omijal/omegaup-cli.
25
24
  Tool for interacting with omegaup from CLI and available throug ruby gems.
26
25
  Commands:
27
- - register-users Add a user or a bunch of users to the a contest.
28
- - user Generates a dump of the user data in yml format.
29
- - scoreboard Gets contest scoreboard with users and score.
30
- - clarifications Gets contest clarifications.
31
- - sources Downloads all code sources into path
26
+ - register-users Add a user or a bunch of users to the a contest.
27
+ - user Generates a dump of the user data in yml format.
28
+ - scoreboard Gets contest scoreboard with users and score.
29
+ - clarifications Gets contest clarifications.
30
+ - sources Downloads all code sources into path
32
31
  Parametes:
33
- --contest Contest name
34
- --user Username or email
35
- --user-file A file path containing a list of user one per line without
36
- header
37
- --open Filter to only open clarifications
38
- --path Path to store results
32
+ --contest Contest name
33
+ --user Username or email
34
+ --user-file A file path containing a list of user one per line without
35
+ header
36
+ --open Filter to only open clarifications
37
+ --path Path to store results
39
38
  Setup:
40
39
  You need to add two env variables with your omegaup credentials.
41
40
  OMEGAUP_URL *Optional* This is intended for development purpose, it will target
42
- to https://omegaup.com by default.
41
+ to https://omegaup.com by default.
43
42
  OMEGAUP_USER *Required* Your OmegaUp Username or Email
44
43
  OMEGAUP_PASS *Required* Your OmegaUp Password
45
- )
44
+ )
45
+
46
+ def print_help
47
+ puts GENERAL_DOC
46
48
  end
47
49
 
48
50
  def initialize(_)
@@ -53,6 +55,7 @@ OMEGAUP_PASS *Required* Your OmegaUp Password
53
55
  Optimist.options do
54
56
  opt :contest, 'Contest ShortName or identifier', type: :string
55
57
  opt :user, 'Username or email', type: :string
58
+ opt :from, 'Another constest that allows to clone users from another contest', type: :string
56
59
  opt :user_file, 'A file containing the users list one per line and without header', type: :string
57
60
  end
58
61
  when 'user'
@@ -107,6 +110,7 @@ OMEGAUP_PASS *Required* Your OmegaUp Password
107
110
  when 'register-users'
108
111
  register_user(@cmd_opts[:contest], @cmd_opts[:user]) if @cmd_opts[:user]
109
112
  register_users(@cmd_opts[:contest], @cmd_opts[:user_file]) if @cmd_opts[:user_file]
113
+ copy_users(@cmd_opts[:contest], @cmd_opts[:from]) if @cmd_opts[:from]
110
114
  when 'user'
111
115
  user_data(@cmd_opts[:user])
112
116
  when 'scoreboard'
@@ -24,6 +24,16 @@ module Omega
24
24
  puts "Failed users: \n- #{failed.join("\n- ")}"
25
25
  end
26
26
 
27
+ def copy_users(contest, from)
28
+ target = omega.contest(contest)
29
+ source = omega.contest(from)
30
+ source.users.each do |user|
31
+ target.add_user(user)
32
+ rescue StandardError => e
33
+ puts "Error adding #{user}: #{e.message}"
34
+ end
35
+ end
36
+
27
37
  def user_data(user)
28
38
  puts omega.user(user).full_data.to_yaml
29
39
  end
data/lib/omega/contest.rb CHANGED
@@ -39,6 +39,10 @@ module Omega
39
39
  @client.clarifications(data[:alias])
40
40
  end
41
41
 
42
+ def users
43
+ scoreboard.users
44
+ end
45
+
42
46
  def observe(score_notifier, clar_noritifer)
43
47
  last = current = scoreboard
44
48
  sleep(5)
@@ -47,8 +51,8 @@ module Omega
47
51
  clarifications.select { |clar| clar[:answer].nil? || clar[:answer].empty? }
48
52
  .each { |clar| clar_noritifer.call(clar) }
49
53
  sleep(300)
50
- rescue StandardError => ex
51
- puts ex.message
54
+ rescue StandardError => e
55
+ puts e.message
52
56
  sleep(3000)
53
57
  end
54
58
  end
@@ -62,14 +66,17 @@ module Omega
62
66
  current_problem = current_score.score_for(name)
63
67
  last_points = problem[:points]
64
68
  current_points = current_problem[:points]
65
- score_notifier.call(data[:alias], score.username, name, current_points, last_points, data[:alias]) if current_points != last_points
69
+ if current_points != last_points
70
+ score_notifier.call(data[:alias], score.username, name, current_points, last_points,
71
+ data[:alias])
72
+ end
66
73
  end
67
74
  end
68
75
  # puts '-' * 60
69
76
  last = current
70
77
  sleep(15)
71
- rescue StandardError => ex
72
- puts ex.message
78
+ rescue StandardError => e
79
+ puts e.message
73
80
  sleep(3000)
74
81
  end
75
82
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
2
4
 
3
5
  module Omega
@@ -9,9 +9,8 @@ module Omega
9
9
 
10
10
  def initialize(client, entry)
11
11
  @username = entry[:username]
12
- @client = client
13
12
  @problems = entry[:problems] || []
14
- @data = entry
13
+ super(client, entry)
15
14
  end
16
15
 
17
16
  def merge(score)
data/lib/omega/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Omega
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
5
5
  end
data/omega.gemspec CHANGED
@@ -26,5 +26,9 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'httparty'
27
27
  spec.add_development_dependency 'minitest', '~> 5'
28
28
  spec.add_development_dependency 'optimist'
29
+ spec.add_development_dependency 'rack-minitest'
30
+ spec.add_development_dependency 'webmock'
31
+ spec.add_development_dependency 'mocha'
32
+ spec.add_development_dependency 'simplecov'
29
33
  spec.add_development_dependency 'rake', '~> 10.0'
30
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omegaup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gilberto Vargas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-07 00:00:00.000000000 Z
11
+ date: 2021-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: amazing_print
@@ -66,6 +66,62 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rack-minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: webmock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: mocha
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
69
125
  - !ruby/object:Gem::Dependency
70
126
  name: rake
71
127
  requirement: !ruby/object:Gem::Requirement