green_day 0.3.0 → 0.3.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/ruby.yml +11 -5
- data/.rubocop.yml +12 -1
- data/README.md +1 -1
- data/green_day.gemspec +5 -1
- data/lib/green_day/cli.rb +16 -19
- data/lib/green_day/task.rb +5 -9
- data/lib/green_day/test_builder.rb +0 -2
- data/lib/green_day/version.rb +1 -1
- metadata +52 -11
- data/lib/green_day/snippet_builder.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36a5e97dca37d3a8c3763cc0ac411b143c70a9bb9371b415a0e64828141613fb
|
4
|
+
data.tar.gz: 4c3101ee0d718b79907850334211d6f92671c2817322eb22862c74077eaa8a40
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea1311da8032a5403d8fccb3e53acb74e5bd36b443d9e985b3d79a8a8dab47151151a5413b645c4ff8f98290011a970daece21f2329727b6f6511878ce75740b
|
7
|
+
data.tar.gz: 65683e77ffb9e1beb340a2131ab0bd60b92e35276cafd4740f6ce1df5ca165c77b4d1ab72dbaccaba9067ef17824d2fea47ef61b500d8ec2cd75a233252aea98
|
data/.github/workflows/ruby.yml
CHANGED
@@ -12,17 +12,23 @@ jobs:
|
|
12
12
|
matrix:
|
13
13
|
ruby:
|
14
14
|
- 2.7.1
|
15
|
+
- 3.0.0
|
15
16
|
steps:
|
16
17
|
- uses: actions/checkout@v2
|
17
18
|
- name: Set up Ruby ${{ matrix.ruby }}
|
18
|
-
uses:
|
19
|
+
uses: ruby/setup-ruby@v1
|
19
20
|
with:
|
20
21
|
ruby-version: ${{ matrix.ruby }}
|
21
|
-
- name:
|
22
|
+
- name: bundle install
|
23
|
+
run: bundle install
|
24
|
+
- name: Rubocop
|
25
|
+
run: bundle exec rubocop
|
26
|
+
- name: Rspec
|
22
27
|
env:
|
23
28
|
USER_NAME: ${{ secrets.USER_NAME }}
|
24
29
|
PASSWORD: ${{ secrets.PASSWORD }}
|
25
30
|
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
26
|
-
run:
|
27
|
-
|
28
|
-
|
31
|
+
run: script -e -c "rake spec"
|
32
|
+
|
33
|
+
|
34
|
+
|
data/.rubocop.yml
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
+
require:
|
2
|
+
- rubocop-rake
|
3
|
+
- rubocop-rspec
|
4
|
+
|
1
5
|
AllCops:
|
6
|
+
NewCops: enable
|
2
7
|
Exclude:
|
3
8
|
- 'spec/spec_helper.rb'
|
4
9
|
Style/Documentation:
|
@@ -9,5 +14,11 @@ Layout/LineLength:
|
|
9
14
|
Max: 90
|
10
15
|
Metrics/BlockLength:
|
11
16
|
Exclude:
|
12
|
-
- 'spec
|
17
|
+
- 'spec/*/**'
|
13
18
|
- 'green_day.gemspec'
|
19
|
+
RSpec/NamedSubject:
|
20
|
+
Enabled: false
|
21
|
+
RSpec/NestedGroups:
|
22
|
+
Max: 4
|
23
|
+
RSpec/ExampleLength:
|
24
|
+
Enabled: false
|
data/README.md
CHANGED
data/green_day.gemspec
CHANGED
@@ -5,6 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
require 'green_day/version'
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
+
spec.required_ruby_version = '>= 2.7.1'
|
8
9
|
spec.name = 'green_day'
|
9
10
|
spec.executables = ['green_day']
|
10
11
|
spec.version = GreenDay::VERSION
|
@@ -30,11 +31,14 @@ Gem::Specification.new do |spec|
|
|
30
31
|
spec.add_dependency 'faraday-cookie_jar'
|
31
32
|
spec.add_dependency 'nokogiri'
|
32
33
|
spec.add_dependency 'parallel'
|
33
|
-
spec.add_dependency 'rspec', '~> 3.0'
|
34
34
|
spec.add_dependency 'thor'
|
35
|
+
spec.add_dependency 'webrick'
|
35
36
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
36
37
|
spec.add_development_dependency 'codecov'
|
37
38
|
spec.add_development_dependency 'dotenv'
|
38
39
|
spec.add_development_dependency 'rake', '>= 12.3.3'
|
40
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
39
41
|
spec.add_development_dependency 'rubocop'
|
42
|
+
spec.add_development_dependency 'rubocop-rake'
|
43
|
+
spec.add_development_dependency 'rubocop-rspec'
|
40
44
|
end
|
data/lib/green_day/cli.rb
CHANGED
@@ -7,16 +7,15 @@ require 'io/console'
|
|
7
7
|
require_relative 'atcoder_client'
|
8
8
|
require_relative 'contest'
|
9
9
|
require_relative 'test_builder'
|
10
|
-
require_relative 'snippet_builder'
|
11
10
|
|
12
11
|
module GreenDay
|
13
12
|
class Cli < Thor
|
14
13
|
desc 'login Atcoder', 'login Atcoder and save session'
|
15
14
|
def login
|
16
15
|
print 'username:'
|
17
|
-
username =
|
16
|
+
username = $stdin.gets(chomp: true)
|
18
17
|
print 'password:'
|
19
|
-
password =
|
18
|
+
password = $stdin.noecho { |stdin| stdin.gets(chomp: true) }.tap { puts }
|
20
19
|
|
21
20
|
AtcoderClient.new.login(username, password)
|
22
21
|
puts(
|
@@ -28,41 +27,39 @@ module GreenDay
|
|
28
27
|
desc 'new [contest name]', 'create contest workspace and spec'
|
29
28
|
def new(contest_name)
|
30
29
|
contest = Contest.new(contest_name, AtcoderClient.new)
|
31
|
-
FileUtils.makedirs("#{
|
30
|
+
FileUtils.makedirs("#{contest.name}/spec")
|
32
31
|
|
33
32
|
Parallel.each(contest.tasks) do |task|
|
34
|
-
create_submit_file
|
35
|
-
create_spec_file
|
33
|
+
create_submit_file(task)
|
34
|
+
create_spec_file(task)
|
36
35
|
end
|
37
36
|
|
38
|
-
puts "Successfully created #{
|
37
|
+
puts "Successfully created #{contest.name} directory".colorize(:green)
|
39
38
|
end
|
40
39
|
|
41
40
|
private
|
42
41
|
|
43
|
-
def create_submit_file
|
44
|
-
File.open(submit_file_path(
|
45
|
-
f.write(SnippetBuilder.build)
|
46
|
-
end
|
42
|
+
def create_submit_file(task)
|
43
|
+
File.open(submit_file_path(task), 'w')
|
47
44
|
end
|
48
45
|
|
49
|
-
def create_spec_file
|
46
|
+
def create_spec_file(task)
|
50
47
|
test =
|
51
48
|
TestBuilder.build_test(
|
52
|
-
submit_file_path(
|
53
|
-
task.
|
49
|
+
submit_file_path(task),
|
50
|
+
task.sample_answers
|
54
51
|
)
|
55
|
-
File.open(spec_file_path(
|
52
|
+
File.open(spec_file_path(task), 'w') do |f|
|
56
53
|
f.write(test)
|
57
54
|
end
|
58
55
|
end
|
59
56
|
|
60
|
-
def submit_file_path(
|
61
|
-
"#{
|
57
|
+
def submit_file_path(task)
|
58
|
+
"#{task.contest.name}/#{task.code}.rb"
|
62
59
|
end
|
63
60
|
|
64
|
-
def spec_file_path(
|
65
|
-
"#{
|
61
|
+
def spec_file_path(task)
|
62
|
+
"#{task.contest.name}/spec/#{task.code}_spec.rb"
|
66
63
|
end
|
67
64
|
end
|
68
65
|
end
|
data/lib/green_day/task.rb
CHANGED
@@ -2,25 +2,21 @@
|
|
2
2
|
|
3
3
|
module GreenDay
|
4
4
|
class Task
|
5
|
-
attr_reader :contest, :code, :
|
5
|
+
attr_reader :contest, :code, :sample_answers
|
6
|
+
|
6
7
|
def initialize(contest, code, client)
|
7
8
|
@contest = contest
|
8
9
|
@code = code
|
9
|
-
@
|
10
|
+
@sample_answers = create_sample_answers(client)
|
10
11
|
end
|
11
12
|
|
12
13
|
private
|
13
14
|
|
14
|
-
def
|
15
|
+
def create_sample_answers(client)
|
15
16
|
input_samples, output_samples =
|
16
17
|
client.fetch_inputs_and_outputs(contest, self)
|
17
18
|
|
18
|
-
|
19
|
-
input_samples.zip(output_samples).each do |input, output|
|
20
|
-
hash[input] = output
|
21
|
-
end
|
22
|
-
|
23
|
-
hash
|
19
|
+
input_samples.zip(output_samples).to_h
|
24
20
|
end
|
25
21
|
end
|
26
22
|
end
|
data/lib/green_day/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: green_day
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- qwyng
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -81,21 +81,21 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: thor
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '0'
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: webrick
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - ">="
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: 12.3.3
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rspec
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '3.0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '3.0'
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: rubocop
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,6 +192,34 @@ dependencies:
|
|
178
192
|
- - ">="
|
179
193
|
- !ruby/object:Gem::Version
|
180
194
|
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: rubocop-rake
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: rubocop-rspec
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
181
223
|
description: CLI tool for AtCoder and Ruby
|
182
224
|
email:
|
183
225
|
- ikusawasi@gmail.com
|
@@ -204,7 +246,6 @@ files:
|
|
204
246
|
- lib/green_day/atcoder_client.rb
|
205
247
|
- lib/green_day/cli.rb
|
206
248
|
- lib/green_day/contest.rb
|
207
|
-
- lib/green_day/snippet_builder.rb
|
208
249
|
- lib/green_day/task.rb
|
209
250
|
- lib/green_day/test_builder.rb
|
210
251
|
- lib/green_day/version.rb
|
@@ -222,14 +263,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
222
263
|
requirements:
|
223
264
|
- - ">="
|
224
265
|
- !ruby/object:Gem::Version
|
225
|
-
version:
|
266
|
+
version: 2.7.1
|
226
267
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
227
268
|
requirements:
|
228
269
|
- - ">="
|
229
270
|
- !ruby/object:Gem::Version
|
230
271
|
version: '0'
|
231
272
|
requirements: []
|
232
|
-
rubygems_version: 3.
|
273
|
+
rubygems_version: 3.2.3
|
233
274
|
signing_key:
|
234
275
|
specification_version: 4
|
235
276
|
summary: CLI tool for AtCoder and Ruby
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module GreenDay
|
4
|
-
module SnippetBuilder
|
5
|
-
ARRAY_INPUT_SNIPPET = 'gets.split.map(&:to_i)'
|
6
|
-
MULTIPLE_LINE_INPUT_SNIPPET =
|
7
|
-
'readlines.map(&:chomp!).map { |e| e.split.map(&:to_i) }'
|
8
|
-
|
9
|
-
module_function
|
10
|
-
|
11
|
-
def build
|
12
|
-
[ARRAY_INPUT_SNIPPET, MULTIPLE_LINE_INPUT_SNIPPET]
|
13
|
-
.map { |snippet| '# ' + snippet }
|
14
|
-
.join("\n") + "\n"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|