green_day 0.4.0 → 0.6.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: 06bcfc1dc4b42165710a01e2d1d4836e0ad829a4b33040d5f35613b836ce15af
4
- data.tar.gz: 39899f57ae69c44e702b7a9a0990e332d8842867584fe97462f01d89edcae461
3
+ metadata.gz: 971ee30b1f0c5e28050c22c9dad43ec540df4b62a8c98732cc087bd6073264ce
4
+ data.tar.gz: b466d89cbb1b7bf4b80bd4b6e6376c62b6bfab1582e0dacea346ceddd43e4996
5
5
  SHA512:
6
- metadata.gz: 54eacd28a4a76464d6a740bc6b670ecf33c8f264cc33b3e32cd8943d6df3f5e85d822c21f09712cf339e0c5d8e2f43626a9d845c8f84c31e0d8b1e818aecfc8a
7
- data.tar.gz: 16e9b1390526d3d55ea2eeaef27f964844aaf23997236f108efecbc8bd2f781c04e04bef3b3a100248072205b075425eb09d7eb016cdbab7ddade4c3598cda2f
6
+ metadata.gz: 89fbaca8563074011b950df0241164a97e0fbb0659126b00cc5a7a04a6cd4169dd0a63ece3d4d245aa19ccbb71421b2841d733bb209e893af48f3c22aeb4db3e
7
+ data.tar.gz: 02bcd53c57dd6c4d73e8871e0943cd494fe700b77ce61603d752f4f2ec4a97653288c9f9e03e4c9d91766d67d399a1647900ccd2ddd7a752d245310151057db4
@@ -0,0 +1,54 @@
1
+ name: Bump version and Push to RubyGems
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ miner-or-major:
7
+ description: 'Minor or major release'
8
+ required: true
9
+ default: 'minor'
10
+ options:
11
+ - 'minor'
12
+ - 'major'
13
+ email:
14
+ description: Your email
15
+ required: true
16
+ type: string
17
+
18
+
19
+ jobs:
20
+ build:
21
+ name: Build + Publish
22
+ runs-on: ubuntu-latest
23
+ permissions:
24
+ packages: write
25
+ contents: read
26
+
27
+ steps:
28
+ - uses: actions/checkout@v3
29
+ - name: Set up Ruby 3.2
30
+ uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: 3.2
33
+
34
+ - run: bundle install
35
+ - run: gem install gem-release
36
+
37
+ - name: config
38
+ run: |
39
+ git config --global user.email ${{ github.event.inputs.email }}
40
+ git config --global user.name ${{ github.actor }}
41
+
42
+ - name: Bump version
43
+ run: gem bump --version ${{ github.event.inputs.miner-or-major }}
44
+
45
+ - name: Publish to RubyGems
46
+ run: |
47
+ mkdir -p $HOME/.gem
48
+ touch $HOME/.gem/credentials
49
+ chmod 0600 $HOME/.gem/credentials
50
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
51
+ gem build *.gemspec
52
+ gem push *.gem
53
+ env:
54
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -10,25 +10,33 @@ jobs:
10
10
  runs-on: ubuntu-latest
11
11
  strategy:
12
12
  matrix:
13
- ruby:
14
- - 2.7.1 # AtCoder公式が使用しているrubyは2.7.1
15
- - 3.1.0
13
+ ruby-version:
14
+ - 3.2.1 # Atcoderが採用しているバージョン
16
15
  steps:
17
- - uses: actions/checkout@v2
18
- - name: Set up Ruby ${{ matrix.ruby }}
16
+ - uses: actions/checkout@v3
17
+ - name: Set up Ruby ${{ matrix.ruby-version }}
19
18
  uses: ruby/setup-ruby@v1
20
19
  with:
21
- ruby-version: ${{ matrix.ruby }}
22
- - name: bundle install
20
+ ruby-version: ${{ matrix.ruby-version }}
21
+ - name: Bundle install
23
22
  run: bundle install
24
- - name: Rubocop
25
- run: bundle exec rubocop
26
- - name: Rspec
23
+ - name: Run Rspec
27
24
  env:
28
25
  USER_NAME: ${{ secrets.USER_NAME }}
29
26
  PASSWORD: ${{ secrets.PASSWORD }}
30
27
  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
31
28
  run: script -e -c "rake spec"
29
+ rubocop:
30
+ runs-on: ubuntu-latest
31
+ steps:
32
+ - uses: actions/checkout@v3
33
+ - uses: ruby/setup-ruby@v1
34
+ with:
35
+ ruby-version: 3.2.1
36
+ - name: Bundle install
37
+ run: bundle install
38
+ - name: Run rubocop
39
+ run: bundle exec rubocop
32
40
 
33
41
 
34
42
 
data/.rubocop.yml CHANGED
@@ -19,6 +19,6 @@ Metrics/BlockLength:
19
19
  RSpec/NamedSubject:
20
20
  Enabled: false
21
21
  RSpec/NestedGroups:
22
- Max: 4
22
+ Max: 7
23
23
  RSpec/ExampleLength:
24
- Enabled: false
24
+ Enabled: false
data/Gemfile CHANGED
@@ -4,3 +4,13 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in green_day.gemspec
6
6
  gemspec
7
+
8
+ gem 'bundler', '~> 2.0'
9
+ gem 'codecov'
10
+ gem 'dotenv'
11
+ gem 'rake', '>= 12.3.3'
12
+ gem 'rspec', '~> 3.0'
13
+ gem 'rubocop'
14
+ gem 'rubocop-rake'
15
+ gem 'rubocop-rspec'
16
+ gem 'vcr'
data/README.md CHANGED
@@ -52,8 +52,6 @@ For example
52
52
  Example of output spec
53
53
 
54
54
  ```ruby
55
- require 'rspec'
56
-
57
55
  RSpec.describe 'test' do
58
56
  it 'test with "2 900\\n"' do
59
57
  io = IO.popen("ruby abc150/A.rb", "w+")
@@ -94,4 +92,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
94
92
 
95
93
  ## Code of Conduct
96
94
 
97
- Everyone interacting in the GreenDay project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/green_day/blob/master/CODE_OF_CONDUCT.md).
95
+ Everyone interacting in the GreenDay project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/QWYNG/green_day/blob/master/CODE_OF_CONDUCT.md).
data/green_day.gemspec CHANGED
@@ -5,7 +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
+ spec.required_ruby_version = '>= 3.2.1'
9
9
  spec.name = 'green_day'
10
10
  spec.executables = ['green_day']
11
11
  spec.version = GreenDay::VERSION
@@ -27,20 +27,9 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ['lib']
28
28
 
29
29
  spec.add_dependency 'colorize'
30
- spec.add_dependency 'faraday', '< 1.0'
30
+ spec.add_dependency 'faraday'
31
31
  spec.add_dependency 'faraday-cookie_jar'
32
32
  spec.add_dependency 'nokogiri'
33
- spec.add_dependency 'parallel'
34
33
  spec.add_dependency 'thor'
35
- spec.add_dependency 'webrick'
36
- spec.add_development_dependency 'bundler', '~> 2.0'
37
- spec.add_development_dependency 'codecov'
38
- spec.add_development_dependency 'dotenv'
39
- spec.add_development_dependency 'rake', '>= 12.3.3'
40
- spec.add_development_dependency 'rspec', '~> 3.0'
41
- spec.add_development_dependency 'rubocop'
42
- spec.add_development_dependency 'rubocop-rake'
43
- spec.add_development_dependency 'rubocop-rspec'
44
- spec.add_development_dependency 'vcr'
45
34
  spec.metadata['rubygems_mfa_required'] = 'true'
46
35
  end
@@ -2,59 +2,47 @@
2
2
 
3
3
  require 'faraday'
4
4
  require 'faraday-cookie_jar'
5
- require 'webrick/cookie'
6
5
  require 'nokogiri'
7
6
 
8
7
  module GreenDay
9
8
  class AtcoderClient
10
9
  ATCODER_ENDPOINT = 'https://atcoder.jp'
11
10
  COOKIE_FILE_NAME = '.cookie-store'
12
- attr_reader :client, :cookie_jar
11
+ attr_reader :conn, :cookie_jar
12
+
13
+ def self.login(username, password)
14
+ new.login(username, password)
15
+ end
16
+
17
+ def self.get_parsed_body(path)
18
+ new.get_parsed_body(path)
19
+ end
13
20
 
14
21
  def initialize
15
22
  @cookie_jar = create_or_load_cookie_jar
16
- @client = Faraday.new(url: ATCODER_ENDPOINT) do |builder|
23
+ @conn = Faraday.new(url: ATCODER_ENDPOINT) do |builder|
17
24
  builder.use :cookie_jar, jar: cookie_jar
18
25
  builder.request :url_encoded
19
26
  builder.adapter :net_http
20
27
  end
21
28
  end
22
29
 
23
- def contest_exist?(contest_name)
24
- res = client.get("contests/#{contest_name}")
25
- res.status == 200
26
- end
27
-
28
- def fetch_task_codes(contest)
29
- body = get_parsed_body("contests/#{contest.name}/tasks")
30
-
31
- # 3問だったら<tbody>の中に<tr>が3 * 2個 </tbody> が1mh個
32
- tasks_size = ((body.at('tbody').children.size - 1) / 2.0).ceil
33
- ('A'..'ZZ').to_a.shift(tasks_size)
34
- end
35
-
36
- def fetch_inputs_and_outputs(contest, task)
37
- contest_name = contest.name
38
- path = "contests/#{contest_name}/tasks/#{contest_name}_#{task.code.downcase}"
39
- body = get_parsed_body(path)
40
- samples = body.css('.lang-ja > .part > section > pre').map { |e| e.children.text }
41
-
42
- inputs, outputs = samples.partition.with_index { |_sample, i| i.even? }
43
-
44
- [inputs, outputs]
30
+ def get_parsed_body(path)
31
+ res = conn.get(path)
32
+ Nokogiri::HTML.parse(res.body)
45
33
  end
46
34
 
47
35
  def login(username, password)
48
36
  csrf_token = obtain_atcoder_csrf_token
49
37
 
50
- client.post('/login',
51
- username: username,
52
- password: password,
53
- csrf_token: csrf_token)
38
+ conn.post('/login',
39
+ username:,
40
+ password:,
41
+ csrf_token:)
54
42
 
55
43
  unless login_succeed?
56
44
  ## ex error:Username or Password is incorrect
57
- raise Error, CGI.unescape(select_flash_cookie.value).split('.').shift
45
+ raise Error, CGI.unescape(flash_cookie.value).split('.').shift
58
46
  end
59
47
 
60
48
  cookie_jar.save(COOKIE_FILE_NAME)
@@ -75,25 +63,21 @@ module GreenDay
75
63
  end
76
64
 
77
65
  def obtain_atcoder_csrf_token
78
- get_login_response = client.get('/login')
66
+ get_login_response = conn.get('/login')
79
67
  login_html = Nokogiri::HTML.parse(get_login_response.body)
80
68
  login_html.at('input[name="csrf_token"]')['value']
81
69
  rescue StandardError
82
- raise Error, 'cant get_csrf_token'
70
+ raise Error, 'can not get_csrf_token'
83
71
  end
84
72
 
85
73
  def login_succeed?
86
- flash_cookie = select_flash_cookie
87
74
  flash_cookie.value.include?('Welcome')
88
75
  end
89
76
 
90
- def select_flash_cookie
91
- cookie_jar.store.instance_variable_get(:@jar)['atcoder.jp']['/']['REVEL_FLASH']
92
- end
93
-
94
- def get_parsed_body(path)
95
- res = client.get(path)
96
- Nokogiri::HTML.parse(res.body)
77
+ def flash_cookie
78
+ @flash_cookie ||= cookie_jar.cookies("#{ATCODER_ENDPOINT}/login").find do |cookie|
79
+ cookie.name == 'REVEL_FLASH'
80
+ end
97
81
  end
98
82
  end
99
83
  end
data/lib/green_day/cli.rb CHANGED
@@ -17,7 +17,7 @@ module GreenDay
17
17
  print 'password:'
18
18
  password = $stdin.noecho { |stdin| stdin.gets(chomp: true) }.tap { puts }
19
19
 
20
- AtcoderClient.new.login(username, password)
20
+ AtcoderClient.login(username, password)
21
21
  puts(
22
22
  "Successfully created #{AtcoderClient::COOKIE_FILE_NAME}"
23
23
  .colorize(:green)
@@ -26,38 +26,36 @@ module GreenDay
26
26
 
27
27
  desc 'new [contest name]', 'create contest workspace and spec'
28
28
  def new(contest_name)
29
- contest = Contest.new(contest_name, AtcoderClient.new)
29
+ contest = Contest.new(contest_name)
30
30
  FileUtils.makedirs("#{contest.name}/spec")
31
31
 
32
- Parallel.each(contest.tasks, in_threads: THREAD_COUNT) do |task|
33
- create_submit_file(task)
34
- create_spec_file(task)
35
- end
32
+ contest.tasks.map do |task|
33
+ create_files_in_thread(task)
34
+ end.each(&:join)
36
35
 
37
36
  puts "Successfully created #{contest.name} directory".colorize(:green)
38
37
  end
39
38
 
40
39
  private
41
40
 
42
- def create_submit_file(task)
43
- File.open(submit_file_path(task), 'w')
41
+ def create_files_in_thread(task)
42
+ Thread.new do
43
+ create_task_file(task)
44
+ create_task_spec_file(task)
45
+ end
44
46
  end
45
47
 
46
- def create_spec_file(task)
47
- test =
48
- TestBuilder.build_test(
49
- submit_file_path(task),
50
- task.sample_answers
51
- )
52
- File.write(spec_file_path(task), test)
48
+ def create_task_file(task)
49
+ FileUtils.touch(task_file_name(task))
53
50
  end
54
51
 
55
- def submit_file_path(task)
56
- "#{task.contest.name}/#{task.code}.rb"
52
+ def create_task_spec_file(task)
53
+ test_content = TestBuilder.build_test(task_file_name(task), task.sample_answers)
54
+ File.write("#{task.contest.name}/spec/#{task.name}_spec.rb", test_content)
57
55
  end
58
56
 
59
- def spec_file_path(task)
60
- "#{task.contest.name}/spec/#{task.code}_spec.rb"
57
+ def task_file_name(task)
58
+ "#{task.contest.name}/#{task.name}.rb"
61
59
  end
62
60
  end
63
61
  end
@@ -1,22 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'atcoder_client'
4
3
  require_relative 'task'
5
4
 
6
5
  module GreenDay
7
6
  class Contest
8
- attr_reader :atcoder_client, :name, :tasks
9
-
10
- def initialize(contest_name, client)
11
- raise GreenDay::Error 'cant find contest' unless client.contest_exist?(contest_name)
7
+ attr_reader :name, :tasks
12
8
 
9
+ def initialize(contest_name)
13
10
  @name = contest_name
14
11
 
15
- task_codes = client.fetch_task_codes(self)
16
- @tasks =
17
- Parallel.map(task_codes, in_threads: THREAD_COUNT) do |task_code|
18
- Task.new(self, task_code, client)
12
+ @tasks = fetch_task_names_and_paths.map.with_index do |(task_name, task_path), i|
13
+ if !i.zero? && (i % 10).zero? && !ENV['CI']
14
+ puts 'Sleeping 2 second to avoid 429 error'
15
+ sleep 2
16
+ end
17
+
18
+ Thread.new do
19
+ Task.new(self, task_name, task_path)
19
20
  end
21
+ end.map(&:value)
22
+ end
23
+
24
+ private
25
+
26
+ def fetch_task_names_and_paths
27
+ body = AtcoderClient.get_parsed_body("contests/#{name}/tasks")
28
+ task_elements = body.search('tbody tr td:first a')
29
+
30
+ task_elements.to_h do |element|
31
+ [element.text, element[:href]]
32
+ end
20
33
  end
21
34
  end
22
35
  end
@@ -2,21 +2,30 @@
2
2
 
3
3
  module GreenDay
4
4
  class Task
5
- attr_reader :contest, :code, :sample_answers
5
+ attr_reader :contest, :name, :path, :sample_answers
6
6
 
7
- def initialize(contest, code, client)
7
+ def initialize(contest, name, path)
8
8
  @contest = contest
9
- @code = code
10
- @sample_answers = create_sample_answers(client)
9
+ @name = name
10
+ @path = path
11
+ @sample_answers = create_sample_answers_hash
11
12
  end
12
13
 
13
14
  private
14
15
 
15
- def create_sample_answers(client)
16
- input_samples, output_samples =
17
- client.fetch_inputs_and_outputs(contest, self)
16
+ def create_sample_answers_hash
17
+ input_samples, output_samples = fetch_inputs_and_outputs
18
18
 
19
19
  input_samples.zip(output_samples).to_h
20
20
  end
21
+
22
+ def fetch_inputs_and_outputs
23
+ body = AtcoderClient.get_parsed_body(path)
24
+ samples = body.css('.lang-ja > .part > section > pre').map { |e| e.children.text }
25
+
26
+ inputs, outputs = samples.partition.with_index { |_sample, i| i.even? }
27
+
28
+ [inputs, outputs]
29
+ end
21
30
  end
22
31
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GreenDay
4
- VERSION = '0.4.0'
4
+ VERSION = '0.6.0'
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.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - qwyng
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-17 00:00:00.000000000 Z
11
+ date: 2023-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -26,20 +26,6 @@ dependencies:
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "<"
32
- - !ruby/object:Gem::Version
33
- version: '1.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "<"
39
- - !ruby/object:Gem::Version
40
- version: '1.0'
41
- - !ruby/object:Gem::Dependency
42
- name: faraday-cookie_jar
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
31
  - - ">="
@@ -53,7 +39,7 @@ dependencies:
53
39
  - !ruby/object:Gem::Version
54
40
  version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
- name: nokogiri
42
+ name: faraday-cookie_jar
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - ">="
@@ -67,7 +53,7 @@ dependencies:
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
- name: parallel
56
+ name: nokogiri
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - ">="
@@ -94,146 +80,6 @@ dependencies:
94
80
  - - ">="
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: webrick
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :runtime
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: bundler
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '2.0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '2.0'
125
- - !ruby/object:Gem::Dependency
126
- name: codecov
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: dotenv
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: rake
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: 12.3.3
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
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'
181
- - !ruby/object:Gem::Dependency
182
- name: rubocop
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- - - ">="
193
- - !ruby/object:Gem::Version
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'
223
- - !ruby/object:Gem::Dependency
224
- name: vcr
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: '0'
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - ">="
235
- - !ruby/object:Gem::Version
236
- version: '0'
237
83
  description: CLI tool for AtCoder and Ruby
238
84
  email:
239
85
  - ikusawasi@gmail.com
@@ -242,6 +88,7 @@ executables:
242
88
  extensions: []
243
89
  extra_rdoc_files: []
244
90
  files:
91
+ - ".github/workflows/bump_version_and_push_to_rubygems.yml"
245
92
  - ".github/workflows/ruby.yml"
246
93
  - ".gitignore"
247
94
  - ".rspec"
@@ -277,14 +124,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
277
124
  requirements:
278
125
  - - ">="
279
126
  - !ruby/object:Gem::Version
280
- version: 2.7.1
127
+ version: 3.2.1
281
128
  required_rubygems_version: !ruby/object:Gem::Requirement
282
129
  requirements:
283
130
  - - ">="
284
131
  - !ruby/object:Gem::Version
285
132
  version: '0'
286
133
  requirements: []
287
- rubygems_version: 3.1.6
134
+ rubygems_version: 3.4.10
288
135
  signing_key:
289
136
  specification_version: 4
290
137
  summary: CLI tool for AtCoder and Ruby