judges 0.53.9 → 0.55.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: 60034ea48fc61859326f81b86d8cd41961a0dffc2ffbee2517e5045e2038d9c6
4
- data.tar.gz: c20e1a6c297801c9a297e298fa3647327994e68fed1372bdc91b94e1bbea0df6
3
+ metadata.gz: eb2df3f4875124734e1fc6698c45a9bae82e187a73ae6632bc31906ec8039452
4
+ data.tar.gz: 14639995b236e8f4ce02fb794b4050b9fc578a1816e09510312f78c3811a09da
5
5
  SHA512:
6
- metadata.gz: e1f0a903fc6a01db440613f958b157ba3b44500c632aa4433cd0683b3227f28ffb24ed7b2d1d6a63e76e95ec7993a132c514b85931e39af152d680bf605ba784
7
- data.tar.gz: 8c7ed1d12b3e7c3c8b96210256044bd2068d4e2aae5d061a83b42863091e1774ef735707dc0a191fddf31758dc2547cd336e4078054046d3ce40974c77059c9e
6
+ metadata.gz: f0b6906cfe65ed01d7d7d3af2677ba45fb6dc875060bcad82d055c18ceccc69973d510a7448748caf1f1bc01680d68fabbe9a223294b0707ddf721a2e1b66d3e
7
+ data.tar.gz: 7d92dfe3ea479bfef86366efe451ed415bb8a54d6c8fe9cddb99348408975282dee4e061b7b89c988221177eefecc3b8a228fb3bb08710a2d34c8004403f6a78
data/Gemfile.lock CHANGED
@@ -3,18 +3,18 @@ PATH
3
3
  specs:
4
4
  judges (0.0.0)
5
5
  backtrace (~> 0.4)
6
- baza.rb (~> 0.5)
6
+ baza.rb (~> 0.10)
7
7
  concurrent-ruby (~> 1.2)
8
- elapsed (~> 0.0)
9
- factbase (~> 0.11)
8
+ elapsed (~> 0.2)
9
+ factbase (~> 0.16)
10
10
  gli (~> 2.21)
11
11
  iri (~> 0.11)
12
12
  loog (~> 0.6)
13
13
  moments (~> 0.3)
14
14
  nokogiri (~> 1.10)
15
- others (~> 0.0)
15
+ others (~> 0.1)
16
16
  retries (~> 0.0)
17
- tago (~> 0.1)
17
+ tago (~> 0.2)
18
18
  timeout (~> 0.4)
19
19
  total (~> 0.4)
20
20
  typhoeus (~> 1.3)
@@ -28,7 +28,7 @@ GEM
28
28
  ast (2.4.3)
29
29
  backtrace (0.4.1)
30
30
  base64 (0.3.0)
31
- baza.rb (0.10.2)
31
+ baza.rb (0.11.0)
32
32
  backtrace (~> 0.4)
33
33
  elapsed (~> 0.2)
34
34
  faraday (~> 2.13)
@@ -40,13 +40,13 @@ GEM
40
40
  retries (~> 0.0)
41
41
  tago (~> 0.2)
42
42
  typhoeus (~> 1.4)
43
- bigdecimal (3.2.3)
43
+ bigdecimal (3.3.1)
44
44
  builder (3.3.0)
45
45
  concurrent-ruby (1.3.5)
46
- crack (1.0.0)
46
+ crack (1.0.1)
47
47
  bigdecimal
48
48
  rexml
49
- cucumber (10.1.0)
49
+ cucumber (10.1.1)
50
50
  base64 (~> 0.2)
51
51
  builder (~> 3.2)
52
52
  cucumber-ci-environment (> 9, < 11)
@@ -59,18 +59,18 @@ GEM
59
59
  multi_test (~> 1.1)
60
60
  sys-uname (~> 1.3)
61
61
  cucumber-ci-environment (10.0.1)
62
- cucumber-core (15.2.1)
63
- cucumber-gherkin (> 27, < 33)
62
+ cucumber-core (15.3.0)
63
+ cucumber-gherkin (> 27, < 35)
64
64
  cucumber-messages (> 26, < 30)
65
- cucumber-tag-expressions (> 5, < 7)
65
+ cucumber-tag-expressions (> 5, < 9)
66
66
  cucumber-cucumber-expressions (18.0.1)
67
67
  bigdecimal
68
- cucumber-gherkin (32.2.0)
69
- cucumber-messages (> 25, < 28)
68
+ cucumber-gherkin (34.0.0)
69
+ cucumber-messages (> 25, < 29)
70
70
  cucumber-html-formatter (21.15.1)
71
71
  cucumber-messages (> 19, < 28)
72
72
  cucumber-messages (27.2.0)
73
- cucumber-tag-expressions (6.1.2)
73
+ cucumber-tag-expressions (8.0.0)
74
74
  decoor (0.1.0)
75
75
  diff-lcs (1.6.2)
76
76
  docile (1.4.1)
@@ -80,7 +80,7 @@ GEM
80
80
  ellipsized (0.3.0)
81
81
  ethon (0.17.0)
82
82
  ffi (>= 1.15.0)
83
- factbase (0.16.7)
83
+ factbase (0.16.8)
84
84
  backtrace (~> 0.4)
85
85
  decoor (~> 0.1)
86
86
  ellipsized (~> 0.3)
@@ -91,7 +91,7 @@ GEM
91
91
  others (~> 0.1)
92
92
  tago (~> 0.1)
93
93
  yaml (~> 0.3)
94
- faraday (2.13.4)
94
+ faraday (2.14.0)
95
95
  faraday-net_http (>= 2.0, < 3.5)
96
96
  json
97
97
  logger
@@ -116,7 +116,7 @@ GEM
116
116
  ostruct
117
117
  hashdiff (1.2.1)
118
118
  iri (0.11.2)
119
- json (2.13.2)
119
+ json (2.15.1)
120
120
  language_server-protocol (3.17.0.5)
121
121
  lint_roller (1.1.0)
122
122
  logger (1.7.0)
@@ -124,7 +124,7 @@ GEM
124
124
  logger (~> 1.0)
125
125
  memoist3 (1.0.0)
126
126
  mini_mime (1.1.5)
127
- minitest (5.25.5)
127
+ minitest (5.26.0)
128
128
  minitest-reporters (1.7.1)
129
129
  ansi
130
130
  builder
@@ -164,7 +164,7 @@ GEM
164
164
  parser (3.3.9.0)
165
165
  ast (~> 2.4.1)
166
166
  racc
167
- prism (1.5.1)
167
+ prism (1.6.0)
168
168
  public_suffix (6.0.2)
169
169
  qbash (0.4.5)
170
170
  backtrace (> 0)
@@ -174,12 +174,12 @@ GEM
174
174
  racc (1.8.1)
175
175
  rainbow (3.1.1)
176
176
  rake (13.3.0)
177
- random-port (0.7.5)
178
- tago (> 0)
177
+ random-port (0.7.6)
178
+ tago (~> 0.0)
179
179
  regexp_parser (2.11.3)
180
180
  retries (0.0.5)
181
181
  rexml (3.4.4)
182
- rubocop (1.80.2)
182
+ rubocop (1.81.6)
183
183
  json (~> 2.3)
184
184
  language_server-protocol (~> 3.17.0.2)
185
185
  lint_roller (~> 1.1.0)
@@ -187,20 +187,20 @@ GEM
187
187
  parser (>= 3.3.0.2)
188
188
  rainbow (>= 2.2.2, < 4.0)
189
189
  regexp_parser (>= 2.9.3, < 3.0)
190
- rubocop-ast (>= 1.46.0, < 2.0)
190
+ rubocop-ast (>= 1.47.1, < 2.0)
191
191
  ruby-progressbar (~> 1.7)
192
192
  unicode-display_width (>= 2.4.0, < 4.0)
193
- rubocop-ast (1.46.0)
193
+ rubocop-ast (1.47.1)
194
194
  parser (>= 3.3.7.2)
195
195
  prism (~> 1.4)
196
196
  rubocop-minitest (0.38.2)
197
197
  lint_roller (~> 1.1)
198
198
  rubocop (>= 1.75.0, < 2.0)
199
199
  rubocop-ast (>= 1.38.0, < 2.0)
200
- rubocop-performance (1.26.0)
200
+ rubocop-performance (1.26.1)
201
201
  lint_roller (~> 1.1)
202
202
  rubocop (>= 1.75.0, < 2.0)
203
- rubocop-ast (>= 1.44.0, < 2.0)
203
+ rubocop-ast (>= 1.47.1, < 2.0)
204
204
  rubocop-rake (0.7.1)
205
205
  lint_roller (~> 1.1)
206
206
  rubocop (>= 1.72.1)
@@ -217,7 +217,7 @@ GEM
217
217
  sys-uname (1.4.1)
218
218
  ffi (~> 1.1)
219
219
  memoist3 (~> 1.0.0)
220
- tago (0.2.0)
220
+ tago (0.3.0)
221
221
  timeout (0.4.3)
222
222
  total (0.4.1)
223
223
  typhoeus (1.4.1)
@@ -225,7 +225,7 @@ GEM
225
225
  unicode-display_width (3.2.0)
226
226
  unicode-emoji (~> 4.1)
227
227
  unicode-emoji (4.1.0)
228
- uri (1.0.3)
228
+ uri (1.0.4)
229
229
  w3c_validators (1.3.7)
230
230
  json (>= 1.8)
231
231
  nokogiri (~> 1.6)
data/README.md CHANGED
@@ -31,7 +31,8 @@ global variables available to it:
31
31
  a judge is finished;
32
32
  * `$global` — a hash map that is never cleaned up;
33
33
  * `$judge` — the basename of the directory, where the `.rb` script is located.
34
- * `$start` — the time moment when plugin was started
34
+ * `$epoch` — the time moment when plugin was started
35
+ * `$kickoff` — the time moment when a judge was started
35
36
 
36
37
  Every `.yml` file must be formatted as such:
37
38
 
data/bin/judges CHANGED
@@ -55,6 +55,8 @@ class JudgesGLI extend GLI::App
55
55
  flag([:factbase], type: String)
56
56
  desc 'Echo the entire command line'
57
57
  switch([:echo])
58
+ desc 'Stay strictly offline, never attempt to reach Internet resources'
59
+ switch([:offline])
58
60
 
59
61
  pre do |global, command, options, args|
60
62
  if global[:verbose]
@@ -16,9 +16,9 @@ Feature: Test
16
16
  And Exit code is zero
17
17
 
18
18
  Scenario: Factbase version can be set
19
- When I run bin/judges with "--factbase 0.16.7 --verbose test --judge guess ./fixtures"
19
+ When I run bin/judges with "--factbase 0.16.8 --verbose test --judge guess ./fixtures"
20
20
  Then Exit code is zero
21
- And Stdout contains "Factbase version to be used: '0.16.7'"
21
+ And Stdout contains "Factbase version to be used: '0.16.8'"
22
22
 
23
23
  Scenario: Simple test of no judges
24
24
  Given I run bin/judges with "test --judge absent_for_sure ./fixtures"
data/judges.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
9
9
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
10
10
  s.required_ruby_version = '>=3.2'
11
11
  s.name = 'judges'
12
- s.version = '0.53.9'
12
+ s.version = '0.55.0'
13
13
  s.license = 'MIT'
14
14
  s.summary = 'Command-Line Tool for a Factbase'
15
15
  s.description =
@@ -26,18 +26,18 @@ Gem::Specification.new do |s|
26
26
  s.rdoc_options = ['--charset=UTF-8']
27
27
  s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
28
28
  s.add_dependency 'backtrace', '~>0.4'
29
- s.add_dependency 'baza.rb', '~>0.5'
29
+ s.add_dependency 'baza.rb', '~>0.10'
30
30
  s.add_dependency 'concurrent-ruby', '~>1.2'
31
- s.add_dependency 'elapsed', '~>0.0'
32
- s.add_dependency 'factbase', '~>0.11'
31
+ s.add_dependency 'elapsed', '~>0.2'
32
+ s.add_dependency 'factbase', '~>0.16'
33
33
  s.add_dependency 'gli', '~>2.21'
34
34
  s.add_dependency 'iri', '~>0.11'
35
35
  s.add_dependency 'loog', '~>0.6'
36
36
  s.add_dependency 'moments', '~>0.3'
37
37
  s.add_dependency 'nokogiri', '~>1.10'
38
- s.add_dependency 'others', '~>0.0'
38
+ s.add_dependency 'others', '~>0.1'
39
39
  s.add_dependency 'retries', '~>0.0'
40
- s.add_dependency 'tago', '~>0.1'
40
+ s.add_dependency 'tago', '~>0.2'
41
41
  s.add_dependency 'timeout', '~>0.4'
42
42
  s.add_dependency 'total', '~>0.4'
43
43
  s.add_dependency 'typhoeus', '~>1.3'
@@ -89,13 +89,14 @@ class Judges::Print
89
89
  'columns' => opts['columns'] || 'when,what,who',
90
90
  'hidden' => opts['hidden'] || '_id,_version,_time,_job',
91
91
  'version' => Judges::VERSION,
92
- 'css_hash' => sha384('index.css'),
93
- 'js_hash' => sha384('index.js')
92
+ 'css_hash' => sha384(opts, 'index.css'),
93
+ 'js_hash' => sha384(opts, 'index.js')
94
94
  )
95
95
  )
96
96
  end
97
97
 
98
- def sha384(asset)
98
+ def sha384(opts, asset)
99
+ return 'sha256-offline' if opts['offline']
99
100
  with_retries do
100
101
  url = "https://yegor256.github.io/judges/assets/#{asset}"
101
102
  http = Typhoeus::Request.get(url)
@@ -66,7 +66,7 @@ class Judges::Update
66
66
  end
67
67
  judges = Judges::Judges.new(
68
68
  dir, opts['lib'], @loog,
69
- start: @start, shuffle: opts['shuffle'], boost: opts['boost'],
69
+ epoch: @epoch, shuffle: opts['shuffle'], boost: opts['boost'],
70
70
  demote: opts['demote']
71
71
  )
72
72
  begin
data/lib/judges/judge.rb CHANGED
@@ -21,11 +21,11 @@ class Judges::Judge
21
21
  # @param [String] dir The directory with the judge
22
22
  # @param [String] lib The directory with the lib/
23
23
  # @param [Loog] loog The logging facility
24
- def initialize(dir, lib, loog, start: Time.now)
24
+ def initialize(dir, lib, loog, epoch: Time.now)
25
25
  @dir = dir
26
26
  @lib = lib
27
27
  @loog = loog
28
- @start = start
28
+ @epoch = epoch
29
29
  end
30
30
 
31
31
  # Returns the string representation of the judge.
@@ -40,7 +40,7 @@ class Judges::Judge
40
40
  # @param [Loog] loog New log
41
41
  # @return [Judges::Judge] Similar judge, but log is different
42
42
  def with_loog(loog)
43
- Judges::Judge.new(@dir, @lib, loog, start: @start)
43
+ Judges::Judge.new(@dir, @lib, loog, epoch: @epoch)
44
44
  end
45
45
 
46
46
  # Executes the judge script with the provided factbase and configuration.
@@ -63,7 +63,8 @@ class Judges::Judge
63
63
  $global = global
64
64
  $global.delete(:fb) # to make sure Tallied is always actual
65
65
  $local = local
66
- $start = @start
66
+ $epoch = @epoch
67
+ $kickoff = Time.now
67
68
  options.to_h.each { |k, v| ENV.store(k.to_s, v.to_s) }
68
69
  unless @lib.nil?
69
70
  raise "Lib dir #{@lib.to_rel} is absent" unless File.exist?(@lib)
@@ -85,7 +86,7 @@ class Judges::Judge
85
86
  raise e if e.is_a?(Timeout::ExitException)
86
87
  raise "#{e.message} (#{e.class.name})"
87
88
  ensure
88
- $fb = $judge = $options = $loog = nil
89
+ $fb = $judge = $options = $loog = $epoch = $kickoff = nil
89
90
  end
90
91
  end
91
92
 
data/lib/judges/judges.rb CHANGED
@@ -30,15 +30,15 @@ class Judges::Judges
30
30
  # @param [String] dir Directory containing judges
31
31
  # @param [String] lib Library directory
32
32
  # @param [Loog] loog Logging facility
33
- # @param [Time] start Start time
33
+ # @param [Time] epoch Start time
34
34
  # @param [String] shuffle Prefix for names of judges to shuffle
35
35
  # @param [Array<String>] boost Names of judges to boost in priority
36
36
  # @param [Array<String>] demote Names of judges to demote in priority
37
- def initialize(dir, lib, loog, start: Time.now, shuffle: '', boost: [], demote: [])
37
+ def initialize(dir, lib, loog, epoch: Time.now, shuffle: '', boost: [], demote: [])
38
38
  @dir = dir
39
39
  @lib = lib
40
40
  @loog = loog
41
- @start = start
41
+ @epoch = epoch
42
42
  @shuffle = shuffle || ''
43
43
  @boost = boost
44
44
  @demote = demote
@@ -54,7 +54,7 @@ class Judges::Judges
54
54
  def get(name)
55
55
  d = File.absolute_path(File.join(@dir, name))
56
56
  raise "Judge #{name} doesn't exist in #{@dir}" unless File.exist?(d)
57
- Judges::Judge.new(d, @lib, @loog, start: @start)
57
+ Judges::Judge.new(d, @lib, @loog, epoch: @epoch)
58
58
  end
59
59
 
60
60
  # Iterates over all valid judges in the directory.
data/lib/judges.rb CHANGED
@@ -8,5 +8,5 @@
8
8
  # Copyright:: Copyright (c) 2024-2025 Yegor Bugayenko
9
9
  # License:: MIT
10
10
  module Judges
11
- VERSION = '0.53.9' unless const_defined?(:VERSION)
11
+ VERSION = '0.55.0' unless const_defined?(:VERSION)
12
12
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: judges
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.53.9
4
+ version: 0.55.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '0.5'
32
+ version: '0.10'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.5'
39
+ version: '0.10'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: concurrent-ruby
42
42
  requirement: !ruby/object:Gem::Requirement
@@ -57,28 +57,28 @@ dependencies:
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0.0'
60
+ version: '0.2'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.0'
67
+ version: '0.2'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: factbase
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.11'
74
+ version: '0.16'
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.11'
81
+ version: '0.16'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: gli
84
84
  requirement: !ruby/object:Gem::Requirement
@@ -155,14 +155,14 @@ dependencies:
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: '0.0'
158
+ version: '0.1'
159
159
  type: :runtime
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: '0.0'
165
+ version: '0.1'
166
166
  - !ruby/object:Gem::Dependency
167
167
  name: retries
168
168
  requirement: !ruby/object:Gem::Requirement
@@ -183,14 +183,14 @@ dependencies:
183
183
  requirements:
184
184
  - - "~>"
185
185
  - !ruby/object:Gem::Version
186
- version: '0.1'
186
+ version: '0.2'
187
187
  type: :runtime
188
188
  prerelease: false
189
189
  version_requirements: !ruby/object:Gem::Requirement
190
190
  requirements:
191
191
  - - "~>"
192
192
  - !ruby/object:Gem::Version
193
- version: '0.1'
193
+ version: '0.2'
194
194
  - !ruby/object:Gem::Dependency
195
195
  name: timeout
196
196
  requirement: !ruby/object:Gem::Requirement