green_day 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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