judges 0.38.1 → 0.39.1
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 +4 -4
- data/.github/workflows/eslint.yml +21 -0
- data/.rultor.yml +9 -0
- data/Gemfile +4 -2
- data/Gemfile.lock +37 -126
- data/README.md +1 -0
- data/Rakefile +8 -12
- data/assets/index.css +19 -0
- data/assets/index.js +17 -0
- data/assets/index.xsl +35 -37
- data/eslint.config.js +26 -0
- data/features/test.feature +2 -2
- data/features/update.feature +1 -1
- data/judges.gemspec +2 -2
- data/lib/judges/commands/print.rb +17 -4
- data/lib/judges/commands/update.rb +7 -7
- data/lib/judges.rb +1 -1
- data/package-lock.json +1006 -0
- data/package.json +5 -0
- data/test/commands/test_print.rb +7 -2
- data/test/test__helper.rb +1 -0
- metadata +12 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 648e8ad65e3255282ff6e2dab31c8afc6d7a74b1a84eea5eea21b129a85338b7
|
4
|
+
data.tar.gz: 8be0599e94e563bfcdc63512f33bd820e6a427e1ad1797fc64d2436ace685ebf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01d29179f30b35bfb378daed6006731fddc12a3ca85ea4b4e0472e9f2ab1338f135744ac2b5a5836ea794cb9a08879c73c5b7319aaea6cc3d87c93fbb0670433
|
7
|
+
data.tar.gz: 5215b033dd301adc1d533c2dee63ef9443c720ba0e67dc8a9ac91450a5d8944174ed68acd6921eed6cf7d282c1c2090055dfde0d2e012522ccd14439ae116999
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Yegor Bugayenko
|
2
|
+
# SPDX-License-Identifier: MIT
|
3
|
+
---
|
4
|
+
# yamllint disable rule:line-length
|
5
|
+
name: eslint
|
6
|
+
'on':
|
7
|
+
push:
|
8
|
+
branches:
|
9
|
+
- master
|
10
|
+
pull_request:
|
11
|
+
branches:
|
12
|
+
- master
|
13
|
+
jobs:
|
14
|
+
eslint:
|
15
|
+
timeout-minutes: 15
|
16
|
+
runs-on: ubuntu-24.04
|
17
|
+
steps:
|
18
|
+
- uses: actions/checkout@v4
|
19
|
+
- run: npm install -g eslint@9.17.0
|
20
|
+
- run: npm install @eslint/js
|
21
|
+
- run: eslint
|
data/.rultor.yml
CHANGED
@@ -23,6 +23,15 @@ release:
|
|
23
23
|
gem build judges.gemspec
|
24
24
|
chmod 0600 ../rubygems.yml
|
25
25
|
gem push *.gem --config-file ../rubygems.yml
|
26
|
+
|
27
|
+
cp assets/index.css /tmp/index.css
|
28
|
+
cp assets/index.js /tmp/index.js
|
29
|
+
git checkout gh-pages
|
30
|
+
mkdir -p assets
|
31
|
+
cp /tmp/index.css assets/index.css
|
32
|
+
cp /tmp/index.js assets/index.js
|
33
|
+
git add assets/
|
34
|
+
git commit -a --allow-empty -m 'New JS and CSS'
|
26
35
|
merge:
|
27
36
|
script: |-
|
28
37
|
bundle exec rake
|
data/Gemfile
CHANGED
@@ -6,16 +6,18 @@
|
|
6
6
|
source 'https://rubygems.org'
|
7
7
|
gemspec
|
8
8
|
|
9
|
+
gem 'base64', '>0'
|
9
10
|
gem 'cucumber', '~>9.2', require: false
|
10
11
|
gem 'minitest', '~>5.25', require: false
|
11
12
|
gem 'minitest-reporters', '~>1.7', require: false
|
12
13
|
gem 'minitest-retry', '~>0.2', require: false
|
13
14
|
gem 'net-ping', '~>2.0', require: false
|
15
|
+
gem 'os', '>0', require: false
|
14
16
|
gem 'qbash', '>0', require: false
|
15
17
|
gem 'rake', '~>13.2', require: false
|
16
18
|
gem 'random-port', '~>0.0', require: false
|
17
|
-
gem '
|
18
|
-
gem 'rubocop', '1.74
|
19
|
+
gem 'rdoc', '>0', require: false
|
20
|
+
gem 'rubocop', '~>1.74', require: false
|
19
21
|
gem 'rubocop-minitest', '>0', require: false
|
20
22
|
gem 'rubocop-performance', '>0', require: false
|
21
23
|
gem 'rubocop-rake', '>0', require: false
|
data/Gemfile.lock
CHANGED
@@ -6,7 +6,7 @@ PATH
|
|
6
6
|
baza.rb (~> 0)
|
7
7
|
concurrent-ruby (~> 1.2)
|
8
8
|
elapsed (~> 0)
|
9
|
-
factbase (
|
9
|
+
factbase (~> 0.9)
|
10
10
|
gli (~> 2.21)
|
11
11
|
iri (~> 0)
|
12
12
|
loog (~> 0)
|
@@ -22,42 +22,13 @@ PATH
|
|
22
22
|
GEM
|
23
23
|
remote: https://rubygems.org/
|
24
24
|
specs:
|
25
|
-
actionpack (8.0.2)
|
26
|
-
actionview (= 8.0.2)
|
27
|
-
activesupport (= 8.0.2)
|
28
|
-
nokogiri (>= 1.8.5)
|
29
|
-
rack (>= 2.2.4)
|
30
|
-
rack-session (>= 1.0.1)
|
31
|
-
rack-test (>= 0.6.3)
|
32
|
-
rails-dom-testing (~> 2.2)
|
33
|
-
rails-html-sanitizer (~> 1.6)
|
34
|
-
useragent (~> 0.16)
|
35
|
-
actionview (8.0.2)
|
36
|
-
activesupport (= 8.0.2)
|
37
|
-
builder (~> 3.1)
|
38
|
-
erubi (~> 1.11)
|
39
|
-
rails-dom-testing (~> 2.2)
|
40
|
-
rails-html-sanitizer (~> 1.6)
|
41
|
-
activesupport (8.0.2)
|
42
|
-
base64
|
43
|
-
benchmark (>= 0.3)
|
44
|
-
bigdecimal
|
45
|
-
concurrent-ruby (~> 1.0, >= 1.3.1)
|
46
|
-
connection_pool (>= 2.2.5)
|
47
|
-
drb
|
48
|
-
i18n (>= 1.6, < 2)
|
49
|
-
logger (>= 1.4.2)
|
50
|
-
minitest (>= 5.1)
|
51
|
-
securerandom (>= 0.3)
|
52
|
-
tzinfo (~> 2.0, >= 2.0.5)
|
53
|
-
uri (>= 0.13.1)
|
54
25
|
addressable (2.8.7)
|
55
26
|
public_suffix (>= 2.0.2, < 7.0)
|
56
27
|
ansi (1.5.0)
|
57
28
|
ast (2.4.3)
|
58
29
|
backtrace (0.4.0)
|
59
30
|
base64 (0.2.0)
|
60
|
-
baza.rb (0.0
|
31
|
+
baza.rb (0.1.0)
|
61
32
|
backtrace (> 0)
|
62
33
|
elapsed (> 0)
|
63
34
|
faraday (> 0)
|
@@ -69,15 +40,12 @@ GEM
|
|
69
40
|
retries (~> 0)
|
70
41
|
tago (~> 0)
|
71
42
|
typhoeus (~> 1.3)
|
72
|
-
benchmark (0.4.0)
|
73
43
|
bigdecimal (3.1.9)
|
74
44
|
builder (3.3.0)
|
75
45
|
concurrent-ruby (1.3.5)
|
76
|
-
connection_pool (2.5.0)
|
77
46
|
crack (1.0.0)
|
78
47
|
bigdecimal
|
79
48
|
rexml
|
80
|
-
crass (1.0.6)
|
81
49
|
cucumber (9.2.1)
|
82
50
|
builder (~> 3.2)
|
83
51
|
cucumber-ci-environment (> 9, < 11)
|
@@ -105,23 +73,22 @@ GEM
|
|
105
73
|
cucumber-tag-expressions (6.1.2)
|
106
74
|
date (3.4.1)
|
107
75
|
decoor (0.0.1)
|
108
|
-
diff-lcs (1.6.
|
76
|
+
diff-lcs (1.6.1)
|
109
77
|
docile (1.4.1)
|
110
|
-
drb (2.2.1)
|
111
78
|
elapsed (0.0.1)
|
112
79
|
loog (> 0)
|
113
80
|
tago (> 0)
|
114
|
-
erubi (1.13.1)
|
115
81
|
ethon (0.16.0)
|
116
82
|
ffi (>= 1.15.0)
|
117
|
-
factbase (0.9.
|
118
|
-
backtrace (
|
119
|
-
decoor (
|
83
|
+
factbase (0.9.10)
|
84
|
+
backtrace (~> 0.4)
|
85
|
+
decoor (~> 0.0)
|
120
86
|
json (~> 2.7)
|
121
|
-
|
87
|
+
logger (~> 1.0)
|
88
|
+
loog (~> 0.6)
|
122
89
|
nokogiri (~> 1.10)
|
123
|
-
others (
|
124
|
-
tago (
|
90
|
+
others (~> 0.0)
|
91
|
+
tago (~> 0.0)
|
125
92
|
yaml (~> 0.3)
|
126
93
|
faraday (2.12.2)
|
127
94
|
faraday-net_http (>= 2.0, < 3.5)
|
@@ -133,7 +100,7 @@ GEM
|
|
133
100
|
multipart-post (~> 2.0)
|
134
101
|
faraday-net_http (3.4.0)
|
135
102
|
net-http (>= 0.5.0)
|
136
|
-
faraday-retry (2.
|
103
|
+
faraday-retry (2.3.0)
|
137
104
|
faraday (~> 2.0)
|
138
105
|
ffi (1.17.1-aarch64-linux-gnu)
|
139
106
|
ffi (1.17.1-arm-linux-gnu)
|
@@ -145,21 +112,11 @@ GEM
|
|
145
112
|
gli (2.22.2)
|
146
113
|
ostruct
|
147
114
|
hashdiff (1.1.2)
|
148
|
-
i18n (1.14.7)
|
149
|
-
concurrent-ruby (~> 1.0)
|
150
|
-
io-console (0.8.0)
|
151
|
-
irb (1.15.1)
|
152
|
-
pp (>= 0.6.0)
|
153
|
-
rdoc (>= 4.0.0)
|
154
|
-
reline (>= 0.4.2)
|
155
115
|
iri (0.10.0)
|
156
116
|
json (2.10.2)
|
157
117
|
language_server-protocol (3.17.0.4)
|
158
118
|
lint_roller (1.1.0)
|
159
|
-
logger (1.
|
160
|
-
loofah (2.24.0)
|
161
|
-
crass (~> 1.0.2)
|
162
|
-
nokogiri (>= 1.12.0)
|
119
|
+
logger (1.7.0)
|
163
120
|
loog (0.6.0)
|
164
121
|
mini_mime (1.1.5)
|
165
122
|
mini_portile2 (2.8.8)
|
@@ -177,30 +134,29 @@ GEM
|
|
177
134
|
net-http (0.6.0)
|
178
135
|
uri
|
179
136
|
net-ping (2.0.8)
|
180
|
-
nokogiri (1.18.
|
137
|
+
nokogiri (1.18.7)
|
181
138
|
mini_portile2 (~> 2.8.2)
|
182
139
|
racc (~> 1.4)
|
183
|
-
nokogiri (1.18.
|
140
|
+
nokogiri (1.18.7-aarch64-linux-gnu)
|
184
141
|
racc (~> 1.4)
|
185
|
-
nokogiri (1.18.
|
142
|
+
nokogiri (1.18.7-arm-linux-gnu)
|
186
143
|
racc (~> 1.4)
|
187
|
-
nokogiri (1.18.
|
144
|
+
nokogiri (1.18.7-arm64-darwin)
|
188
145
|
racc (~> 1.4)
|
189
|
-
nokogiri (1.18.
|
146
|
+
nokogiri (1.18.7-x64-mingw-ucrt)
|
190
147
|
racc (~> 1.4)
|
191
|
-
nokogiri (1.18.
|
148
|
+
nokogiri (1.18.7-x86_64-darwin)
|
192
149
|
racc (~> 1.4)
|
193
|
-
nokogiri (1.18.
|
150
|
+
nokogiri (1.18.7-x86_64-linux-gnu)
|
194
151
|
racc (~> 1.4)
|
152
|
+
os (1.1.4)
|
195
153
|
ostruct (0.6.1)
|
196
154
|
others (0.0.3)
|
197
155
|
parallel (1.26.3)
|
198
|
-
parser (3.3.7.
|
156
|
+
parser (3.3.7.4)
|
199
157
|
ast (~> 2.4.1)
|
200
158
|
racc
|
201
|
-
|
202
|
-
prettyprint
|
203
|
-
prettyprint (0.2.0)
|
159
|
+
prism (1.4.0)
|
204
160
|
psych (5.2.3)
|
205
161
|
date
|
206
162
|
stringio
|
@@ -211,58 +167,16 @@ GEM
|
|
211
167
|
loog (> 0)
|
212
168
|
tago (> 0)
|
213
169
|
racc (1.8.1)
|
214
|
-
rack (3.1.12)
|
215
|
-
rack-session (2.1.0)
|
216
|
-
base64 (>= 0.1.0)
|
217
|
-
rack (>= 3.0.0)
|
218
|
-
rack-test (2.2.0)
|
219
|
-
rack (>= 1.3)
|
220
|
-
rackup (2.2.1)
|
221
|
-
rack (>= 3)
|
222
|
-
rails-dom-testing (2.2.0)
|
223
|
-
activesupport (>= 5.0.0)
|
224
|
-
minitest
|
225
|
-
nokogiri (>= 1.6)
|
226
|
-
rails-html-sanitizer (1.6.2)
|
227
|
-
loofah (~> 2.21)
|
228
|
-
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
229
|
-
railties (8.0.2)
|
230
|
-
actionpack (= 8.0.2)
|
231
|
-
activesupport (= 8.0.2)
|
232
|
-
irb (~> 1.13)
|
233
|
-
rackup (>= 1.0.0)
|
234
|
-
rake (>= 12.2)
|
235
|
-
thor (~> 1.0, >= 1.2.2)
|
236
|
-
zeitwerk (~> 2.6)
|
237
170
|
rainbow (3.1.1)
|
238
171
|
rake (13.2.1)
|
239
172
|
random-port (0.7.5)
|
240
173
|
tago (> 0)
|
241
|
-
rdoc (6.
|
174
|
+
rdoc (6.13.1)
|
242
175
|
psych (>= 4.0.0)
|
243
176
|
regexp_parser (2.10.0)
|
244
|
-
reline (0.6.0)
|
245
|
-
io-console (~> 0.5)
|
246
177
|
retries (0.0.5)
|
247
178
|
rexml (3.4.1)
|
248
|
-
|
249
|
-
rspec-support (~> 3.13.0)
|
250
|
-
rspec-expectations (3.13.3)
|
251
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
252
|
-
rspec-support (~> 3.13.0)
|
253
|
-
rspec-mocks (3.13.2)
|
254
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
255
|
-
rspec-support (~> 3.13.0)
|
256
|
-
rspec-rails (7.1.1)
|
257
|
-
actionpack (>= 7.0)
|
258
|
-
activesupport (>= 7.0)
|
259
|
-
railties (>= 7.0)
|
260
|
-
rspec-core (~> 3.13)
|
261
|
-
rspec-expectations (~> 3.13)
|
262
|
-
rspec-mocks (~> 3.13)
|
263
|
-
rspec-support (~> 3.13)
|
264
|
-
rspec-support (3.13.2)
|
265
|
-
rubocop (1.74.0)
|
179
|
+
rubocop (1.75.1)
|
266
180
|
json (~> 2.3)
|
267
181
|
language_server-protocol (~> 3.17.0.2)
|
268
182
|
lint_roller (~> 1.1.0)
|
@@ -270,18 +184,19 @@ GEM
|
|
270
184
|
parser (>= 3.3.0.2)
|
271
185
|
rainbow (>= 2.2.2, < 4.0)
|
272
186
|
regexp_parser (>= 2.9.3, < 3.0)
|
273
|
-
rubocop-ast (>= 1.
|
187
|
+
rubocop-ast (>= 1.43.0, < 2.0)
|
274
188
|
ruby-progressbar (~> 1.7)
|
275
189
|
unicode-display_width (>= 2.4.0, < 4.0)
|
276
|
-
rubocop-ast (1.
|
277
|
-
parser (>= 3.3.
|
278
|
-
|
190
|
+
rubocop-ast (1.43.0)
|
191
|
+
parser (>= 3.3.7.2)
|
192
|
+
prism (~> 1.4)
|
193
|
+
rubocop-minitest (0.38.0)
|
279
194
|
lint_roller (~> 1.1)
|
280
|
-
rubocop (>= 1.
|
195
|
+
rubocop (>= 1.75.0, < 2.0)
|
281
196
|
rubocop-ast (>= 1.38.0, < 2.0)
|
282
|
-
rubocop-performance (1.
|
197
|
+
rubocop-performance (1.25.0)
|
283
198
|
lint_roller (~> 1.1)
|
284
|
-
rubocop (>= 1.
|
199
|
+
rubocop (>= 1.75.0, < 2.0)
|
285
200
|
rubocop-ast (>= 1.38.0, < 2.0)
|
286
201
|
rubocop-rake (0.7.1)
|
287
202
|
lint_roller (~> 1.1)
|
@@ -290,7 +205,6 @@ GEM
|
|
290
205
|
lint_roller (~> 1.1)
|
291
206
|
rubocop (~> 1.72, >= 1.72.1)
|
292
207
|
ruby-progressbar (1.13.0)
|
293
|
-
securerandom (0.4.1)
|
294
208
|
simplecov (0.22.0)
|
295
209
|
docile (~> 1.1)
|
296
210
|
simplecov-html (~> 0.11)
|
@@ -300,22 +214,18 @@ GEM
|
|
300
214
|
simplecov (~> 0.19)
|
301
215
|
simplecov-html (0.13.1)
|
302
216
|
simplecov_json_formatter (0.1.4)
|
303
|
-
stringio (3.1.
|
217
|
+
stringio (3.1.6)
|
304
218
|
sys-uname (1.3.1)
|
305
219
|
ffi (~> 1.1)
|
306
220
|
tago (0.1.0)
|
307
|
-
thor (1.3.2)
|
308
221
|
timeout (0.4.3)
|
309
222
|
total (0.4.1)
|
310
223
|
typhoeus (1.4.1)
|
311
224
|
ethon (>= 0.9.0)
|
312
|
-
tzinfo (2.0.6)
|
313
|
-
concurrent-ruby (~> 1.0)
|
314
225
|
unicode-display_width (3.1.4)
|
315
226
|
unicode-emoji (~> 4.0, >= 4.0.4)
|
316
227
|
unicode-emoji (4.0.4)
|
317
228
|
uri (1.0.3)
|
318
|
-
useragent (0.16.11)
|
319
229
|
w3c_validators (1.3.7)
|
320
230
|
json (>= 1.8)
|
321
231
|
nokogiri (~> 1.6)
|
@@ -326,7 +236,6 @@ GEM
|
|
326
236
|
hashdiff (>= 0.4.0, < 2.0.0)
|
327
237
|
yaml (0.4.0)
|
328
238
|
yard (0.9.37)
|
329
|
-
zeitwerk (2.7.2)
|
330
239
|
|
331
240
|
PLATFORMS
|
332
241
|
aarch64-linux
|
@@ -339,17 +248,19 @@ PLATFORMS
|
|
339
248
|
x86_64-linux
|
340
249
|
|
341
250
|
DEPENDENCIES
|
251
|
+
base64 (> 0)
|
342
252
|
cucumber (~> 9.2)
|
343
253
|
judges!
|
344
254
|
minitest (~> 5.25)
|
345
255
|
minitest-reporters (~> 1.7)
|
346
256
|
minitest-retry (~> 0.2)
|
347
257
|
net-ping (~> 2.0)
|
258
|
+
os (> 0)
|
348
259
|
qbash (> 0)
|
349
260
|
rake (~> 13.2)
|
350
261
|
random-port (~> 0.0)
|
351
|
-
|
352
|
-
rubocop (
|
262
|
+
rdoc (> 0)
|
263
|
+
rubocop (~> 1.74)
|
353
264
|
rubocop-minitest (> 0)
|
354
265
|
rubocop-performance (> 0)
|
355
266
|
rubocop-rake (> 0)
|
data/README.md
CHANGED
@@ -10,6 +10,7 @@
|
|
10
10
|
[](http://rubydoc.info/github/yegor256/judges/master/frames)
|
11
11
|
[](https://hitsofcode.com/view/github/yegor256/judges)
|
12
12
|
[](https://github.com/yegor256/judges/blob/master/LICENSE.txt)
|
13
|
+
[](https://app.fossa.com/projects/git%2Bgithub.com%2Fyegor256%2Fjudges?ref=badge_shield&issueType=license)
|
13
14
|
|
14
15
|
A command line tool and a Ruby gem for running so called judges against a
|
15
16
|
[factbase](https://github.com/yegor256/factbase).
|
data/Rakefile
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 Yegor Bugayenko
|
4
4
|
# SPDX-License-Identifier: MIT
|
5
5
|
|
6
|
+
require 'os'
|
6
7
|
require 'qbash'
|
7
8
|
require 'rubygems'
|
8
9
|
require 'rake'
|
@@ -20,7 +21,7 @@ end
|
|
20
21
|
|
21
22
|
ENV['RACK_ENV'] = 'test'
|
22
23
|
|
23
|
-
task default: %i[clean test features picks
|
24
|
+
task default: %i[clean test features picks rubocop yard]
|
24
25
|
|
25
26
|
require 'rake/testtask'
|
26
27
|
desc 'Run all unit tests'
|
@@ -34,22 +35,18 @@ end
|
|
34
35
|
|
35
36
|
desc 'Run them via Ruby, one by one'
|
36
37
|
task :picks do
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
desc 'Require them via Ruby, one by one'
|
43
|
-
task :reqs do
|
44
|
-
Dir['lib/**/*.rb'].each do |f|
|
45
|
-
qbash("bundle exec ruby #{Shellwords.escape(f)}", log: $stdout)
|
38
|
+
next if OS.windows?
|
39
|
+
%w[test lib].each do |d|
|
40
|
+
Dir["#{d}/**/*.rb"].each do |f|
|
41
|
+
qbash("bundle exec ruby #{Shellwords.escape(f)}", log: $stdout)
|
42
|
+
end
|
46
43
|
end
|
47
44
|
end
|
48
45
|
|
49
46
|
require 'cucumber/rake/task'
|
50
47
|
Cucumber::Rake::Task.new(:features) do |t|
|
51
48
|
Rake::Cleaner.cleanup_files(['coverage'])
|
52
|
-
t.cucumber_opts = %w[--no-color --
|
49
|
+
t.cucumber_opts = %w[--no-color --retry=2 --fail-fast --backtrace --order=random]
|
53
50
|
end
|
54
51
|
Cucumber::Rake::Task.new(:'features:html') do |t|
|
55
52
|
t.profile = 'html_report'
|
@@ -65,5 +62,4 @@ require 'rubocop/rake_task'
|
|
65
62
|
desc 'Run RuboCop on all directories'
|
66
63
|
RuboCop::RakeTask.new(:rubocop) do |task|
|
67
64
|
task.fail_on_error = true
|
68
|
-
task.requires << 'rubocop-rspec'
|
69
65
|
end
|
data/assets/index.css
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
/*
|
2
|
+
SPDX-FileCopyrightText: Copyright (c) 2024-2025 Yegor Bugayenko
|
3
|
+
SPDX-License-Identifier: MIT
|
4
|
+
*/
|
5
|
+
|
6
|
+
* { font-family: monospace; }
|
7
|
+
section { width: 100%; }
|
8
|
+
article { border: none; }
|
9
|
+
header img { width: 3em; height: 3em; }
|
10
|
+
table { table-layout: fixed; }
|
11
|
+
td { word-wrap: break-word; }
|
12
|
+
.sorter { cursor: pointer; }
|
13
|
+
.S { color: #4A5240; }
|
14
|
+
.T { color: #2471A3; }
|
15
|
+
.I { color: #61304B; }
|
16
|
+
.F { color: #5C0029; }
|
17
|
+
.BR { color: #B6C649; }
|
18
|
+
.hidden { color: #C1C1C1; }
|
19
|
+
.w50 { width: 50%; }
|
data/assets/index.js
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
/*
|
2
|
+
SPDX-FileCopyrightText: Copyright (c) 2024-2025 Yegor Bugayenko
|
3
|
+
SPDX-License-Identifier: MIT
|
4
|
+
*/
|
5
|
+
|
6
|
+
$(() => {
|
7
|
+
$('#facts').tablesorter();
|
8
|
+
});
|
9
|
+
|
10
|
+
updateTime = () => {
|
11
|
+
const now = new Date();
|
12
|
+
const isoTime = now.toISOString();
|
13
|
+
const timeElement = document.getElementById('current-time');
|
14
|
+
timeElement.textContent = `Current time: ${isoTime}`;
|
15
|
+
}
|
16
|
+
updateTime();
|
17
|
+
setInterval(updateTime, 1000);
|
data/assets/index.xsl
CHANGED
@@ -10,12 +10,20 @@
|
|
10
10
|
<xsl:param name="version"/>
|
11
11
|
<xsl:param name="columns"/>
|
12
12
|
<xsl:param name="hidden"/>
|
13
|
+
<xsl:param name="js_hash"/>
|
14
|
+
<xsl:param name="css_hash"/>
|
13
15
|
<xsl:template name="javascript">
|
14
|
-
<xsl:param name="url"/>
|
15
|
-
<
|
16
|
+
<xsl:param name="url" as="string"/>
|
17
|
+
<xsl:param name="hash" as="string"/>
|
18
|
+
<script type="text/javascript" src="{$url}" integrity="{$hash}" crossorigin="anonymous">
|
16
19
|
<xsl:text> </xsl:text>
|
17
20
|
</script>
|
18
21
|
</xsl:template>
|
22
|
+
<xsl:template name="css">
|
23
|
+
<xsl:param name="url" as="string"/>
|
24
|
+
<xsl:param name="hash" as="string"/>
|
25
|
+
<link href="{$url}" rel="stylesheet" integrity="{$hash}" crossorigin="anonymous"/>
|
26
|
+
</xsl:template>
|
19
27
|
<xsl:template match="/">
|
20
28
|
<xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
|
21
29
|
<html>
|
@@ -33,34 +41,34 @@
|
|
33
41
|
</xsl:choose>
|
34
42
|
</title>
|
35
43
|
<link rel="icon" href="https://www.zerocracy.com/svg/logo.svg" type="image/svg"/>
|
36
|
-
<
|
37
|
-
|
44
|
+
<xsl:call-template name="css">
|
45
|
+
<xsl:with-param name="url">https://cdn.jsdelivr.net/npm/tacit-css@1.8.1/dist/tacit-css.min.css</xsl:with-param>
|
46
|
+
<xsl:with-param name="hash">sha384-JbsYayq5Otme+gjh/pl7NrA/qMIU0bxbdzKvYqQGHvvag0lHhM62TQnDzz+EyzXj</xsl:with-param>
|
47
|
+
</xsl:call-template>
|
48
|
+
<xsl:call-template name="css">
|
49
|
+
<xsl:with-param name="url">https://cdn.jsdelivr.net/npm/drops@0.2.0/dist/drops-0.2.0.min.css</xsl:with-param>
|
50
|
+
<xsl:with-param name="hash">sha384-5jl1QSYGvyjnoRf6lIhaq2MlbW/qjOvNay9i434tlxyKPqm+t1ed5vxKgT75C4xe</xsl:with-param>
|
51
|
+
</xsl:call-template>
|
52
|
+
<xsl:call-template name="css">
|
53
|
+
<xsl:with-param name="url">https://yegor256.github.io/judges/assets/index.css</xsl:with-param>
|
54
|
+
<xsl:with-param name="hash">
|
55
|
+
<xsl:value-of select="$css_hash"/>
|
56
|
+
</xsl:with-param>
|
57
|
+
</xsl:call-template>
|
38
58
|
<xsl:call-template name="javascript">
|
39
|
-
<xsl:with-param name="url">https://
|
59
|
+
<xsl:with-param name="url">https://code.jquery.com/jquery-3.7.1.min.js</xsl:with-param>
|
60
|
+
<xsl:with-param name="hash">sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=</xsl:with-param>
|
40
61
|
</xsl:call-template>
|
41
62
|
<xsl:call-template name="javascript">
|
42
63
|
<xsl:with-param name="url">https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.3/js/jquery.tablesorter.min.js</xsl:with-param>
|
64
|
+
<xsl:with-param name="hash">sha384-+PEWXCk8F17zxsQsEjkuHjUN4yFMHv03eKxKLrqwDql8FJQM0NeSvHRZFVLfXyn7</xsl:with-param>
|
65
|
+
</xsl:call-template>
|
66
|
+
<xsl:call-template name="javascript">
|
67
|
+
<xsl:with-param name="url">https://yegor256.github.io/judges/assets/index.js</xsl:with-param>
|
68
|
+
<xsl:with-param name="hash">
|
69
|
+
<xsl:value-of select="$js_hash"/>
|
70
|
+
</xsl:with-param>
|
43
71
|
</xsl:call-template>
|
44
|
-
<style>
|
45
|
-
* { font-family: monospace; }
|
46
|
-
section { width: 100%; }
|
47
|
-
article { border: none; }
|
48
|
-
header img { width: 3em; height: 3em; }
|
49
|
-
table { table-layout: fixed; }
|
50
|
-
td { word-wrap: break-word; }
|
51
|
-
.sorter { cursor: pointer; }
|
52
|
-
.S { color: #4A5240; }
|
53
|
-
.T { color: #2471A3; }
|
54
|
-
.I { color: #61304B; }
|
55
|
-
.F { color: #5C0029; }
|
56
|
-
.BR { color: #B6C649; }
|
57
|
-
.hidden { color: #C1C1C1; }
|
58
|
-
</style>
|
59
|
-
<script type="text/javascript">
|
60
|
-
$(function() {
|
61
|
-
$("#facts").tablesorter();
|
62
|
-
});
|
63
|
-
</script>
|
64
72
|
</head>
|
65
73
|
<body>
|
66
74
|
<section>
|
@@ -111,16 +119,6 @@
|
|
111
119
|
</p>
|
112
120
|
</footer>
|
113
121
|
</section>
|
114
|
-
<script type="text/javascript">
|
115
|
-
function updateTime() {
|
116
|
-
const now = new Date();
|
117
|
-
const isoTime = now.toISOString();
|
118
|
-
const timeElement = document.getElementById('current-time');
|
119
|
-
timeElement.textContent = `Current time: ${isoTime}`;
|
120
|
-
}
|
121
|
-
updateTime();
|
122
|
-
setInterval(updateTime, 1000);
|
123
|
-
</script>
|
124
122
|
</body>
|
125
123
|
</html>
|
126
124
|
</xsl:template>
|
@@ -155,13 +153,13 @@
|
|
155
153
|
<xsl:param name="cols"/>
|
156
154
|
<xsl:choose>
|
157
155
|
<xsl:when test="string-length($cols) > 0">
|
158
|
-
<col
|
156
|
+
<col/>
|
159
157
|
<xsl:call-template name="col">
|
160
158
|
<xsl:with-param name="cols" select="substring-after($cols, ',')"/>
|
161
159
|
</xsl:call-template>
|
162
160
|
</xsl:when>
|
163
161
|
<xsl:otherwise>
|
164
|
-
<col
|
162
|
+
<col class="w50"/>
|
165
163
|
</xsl:otherwise>
|
166
164
|
</xsl:choose>
|
167
165
|
</xsl:template>
|
data/eslint.config.js
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
/*
|
2
|
+
* SPDX-FileCopyrightText: Copyright (c) 2024-2025 Yegor Bugayenko
|
3
|
+
* SPDX-License-Identifier: MIT
|
4
|
+
*/
|
5
|
+
|
6
|
+
const { configs } = require('@eslint/js');
|
7
|
+
|
8
|
+
module.exports = [
|
9
|
+
{
|
10
|
+
...configs.all,
|
11
|
+
files: ['**/*.js'],
|
12
|
+
ignores: ['node_modules/**/*.js', 'coverage/**/*.js', 'doc/**/*.js'],
|
13
|
+
languageOptions: {
|
14
|
+
ecmaVersion: 2019,
|
15
|
+
sourceType: 'module'
|
16
|
+
},
|
17
|
+
rules: {
|
18
|
+
...configs.all.rules,
|
19
|
+
'indent': ['error', 2],
|
20
|
+
'max-len': ['error', { code: 200 }],
|
21
|
+
'no-magic-numbers': 'off',
|
22
|
+
'no-undef': 'off',
|
23
|
+
'one-var': 'off'
|
24
|
+
}
|
25
|
+
}
|
26
|
+
];
|
data/features/test.feature
CHANGED
@@ -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.9.
|
19
|
+
When I run bin/judges with "--factbase 0.9.10 --verbose test --judge guess ./fixtures"
|
20
20
|
Then Exit code is zero
|
21
|
-
And Stdout contains "Factbase version to be used: '0.9.
|
21
|
+
And Stdout contains "Factbase version to be used: '0.9.10'"
|
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/features/update.feature
CHANGED
@@ -57,7 +57,7 @@ Feature: Update
|
|
57
57
|
"""
|
58
58
|
Then I run bin/judges with "--verbose update --timeout 1 --quiet . foo.fb"
|
59
59
|
Then Stdout contains "execution expired"
|
60
|
-
Then Stdout contains "judge timed out"
|
60
|
+
Then Stdout contains "judge timed out after"
|
61
61
|
Then Stdout contains "1 judge(s) processed"
|
62
62
|
Then Stdout contains "Update finished in 1 cycle(s), did 0i/0d/0a"
|
63
63
|
And Exit code is zero
|
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.
|
12
|
+
s.version = '0.39.1'
|
13
13
|
s.license = 'MIT'
|
14
14
|
s.summary = 'Command-Line Tool for a Factbase'
|
15
15
|
s.description =
|
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.add_dependency 'baza.rb', '~>0'
|
30
30
|
s.add_dependency 'concurrent-ruby', '~>1.2'
|
31
31
|
s.add_dependency 'elapsed', '~>0'
|
32
|
-
s.add_dependency 'factbase', '
|
32
|
+
s.add_dependency 'factbase', '~>0.9'
|
33
33
|
s.add_dependency 'gli', '~>2.21'
|
34
34
|
s.add_dependency 'iri', '~>0'
|
35
35
|
s.add_dependency 'loog', '~>0'
|