green_day 0.4.0 → 0.6.0

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: 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