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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dec8f7c9c721bbd5e652f18959de01d9a90d6ec3a1d7caf57eed76aa31ad9378
4
- data.tar.gz: c2afef234af2730e3a2ac2fff659dcfc85489b0292d2395f6382bab3a73d2f37
3
+ metadata.gz: 36a5e97dca37d3a8c3763cc0ac411b143c70a9bb9371b415a0e64828141613fb
4
+ data.tar.gz: 4c3101ee0d718b79907850334211d6f92671c2817322eb22862c74077eaa8a40
5
5
  SHA512:
6
- metadata.gz: 9a6f108363c5e35d96b5739184318260d64da36187a259449ac5fde602d6d70a16d7bfab01f64f4a8794fcbbfa49322bdfb13ae408a7ffd0299820a5eac2f806
7
- data.tar.gz: 9e6d545f778fd361853c082fcd1d67564d59edef0bbe88ac2f47189c0bcc1b1c4603f35374cf0d8728c455b8c0ed33f18e96eb54ddf5e8432a72a688d1684de8
6
+ metadata.gz: ea1311da8032a5403d8fccb3e53acb74e5bd36b443d9e985b3d79a8a8dab47151151a5413b645c4ff8f98290011a970daece21f2329727b6f6511878ce75740b
7
+ data.tar.gz: 65683e77ffb9e1beb340a2131ab0bd60b92e35276cafd4740f6ce1df5ca165c77b4d1ab72dbaccaba9067ef17824d2fea47ef61b500d8ec2cd75a233252aea98
@@ -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: actions/setup-ruby@v1
19
+ uses: ruby/setup-ruby@v1
19
20
  with:
20
21
  ruby-version: ${{ matrix.ruby }}
21
- - name: Rspec with rake
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
- bundle install --jobs 4 --retry 3
28
- script -e -c rake
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
@@ -1,5 +1,5 @@
1
1
  # GreenDay
2
- Automatically create workspace and tests for Atcoder contests
2
+ Automatically create workspace and tests for Atcoder contest
3
3
  (日本語で解説した記事は[こちら](https://qiita.com/QWYNG/items/0e2e6b72bd1969d0d751))
4
4
  ## Installation
5
5
 
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 = STDIN.gets(chomp: true)
16
+ username = $stdin.gets(chomp: true)
18
17
  print 'password:'
19
- password = STDIN.noecho { |stdin| stdin.gets(chomp: true) }.tap { puts }
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("#{contest_name}/spec")
30
+ FileUtils.makedirs("#{contest.name}/spec")
32
31
 
33
32
  Parallel.each(contest.tasks) do |task|
34
- create_submit_file!(contest_name, task)
35
- create_spec_file!(contest_name, task)
33
+ create_submit_file(task)
34
+ create_spec_file(task)
36
35
  end
37
36
 
38
- puts "Successfully created #{contest_name} directory".colorize(:green)
37
+ puts "Successfully created #{contest.name} directory".colorize(:green)
39
38
  end
40
39
 
41
40
  private
42
41
 
43
- def create_submit_file!(contest_name, task)
44
- File.open(submit_file_path(contest_name, task), 'w') do |f|
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!(contest_name, task)
46
+ def create_spec_file(task)
50
47
  test =
51
48
  TestBuilder.build_test(
52
- submit_file_path(contest_name, task),
53
- task.input_output_hash
49
+ submit_file_path(task),
50
+ task.sample_answers
54
51
  )
55
- File.open(spec_file_path(contest_name, task), 'w') do |f|
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(contest_name, task)
61
- "#{contest_name}/#{task.code}.rb"
57
+ def submit_file_path(task)
58
+ "#{task.contest.name}/#{task.code}.rb"
62
59
  end
63
60
 
64
- def spec_file_path(contest_name, task)
65
- "#{contest_name}/spec/#{task.code}_spec.rb"
61
+ def spec_file_path(task)
62
+ "#{task.contest.name}/spec/#{task.code}_spec.rb"
66
63
  end
67
64
  end
68
65
  end
@@ -2,25 +2,21 @@
2
2
 
3
3
  module GreenDay
4
4
  class Task
5
- attr_reader :contest, :code, :input_output_hash
5
+ attr_reader :contest, :code, :sample_answers
6
+
6
7
  def initialize(contest, code, client)
7
8
  @contest = contest
8
9
  @code = code
9
- @input_output_hash = create_input_output_hash(client)
10
+ @sample_answers = create_sample_answers(client)
10
11
  end
11
12
 
12
13
  private
13
14
 
14
- def create_input_output_hash(client)
15
+ def create_sample_answers(client)
15
16
  input_samples, output_samples =
16
17
  client.fetch_inputs_and_outputs(contest, self)
17
18
 
18
- hash = {}
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
@@ -6,8 +6,6 @@ module GreenDay
6
6
 
7
7
  def build_test(submit_file_path, input_output_hash)
8
8
  <<~SPEC
9
- require 'rspec'
10
-
11
9
  RSpec.describe 'test' do
12
10
  #{input_output_hash.map { |input, output| build_example(submit_file_path, input, output) }.join("\n")}
13
11
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GreenDay
4
- VERSION = '0.3.0'
4
+ VERSION = '0.3.1'
5
5
  end
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.0
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: 2020-07-16 00:00:00.000000000 Z
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: rspec
84
+ name: thor
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '3.0'
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: '3.0'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: thor
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: '0'
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.1.2
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