green_day 0.3.0 → 0.5.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: dec8f7c9c721bbd5e652f18959de01d9a90d6ec3a1d7caf57eed76aa31ad9378
4
- data.tar.gz: c2afef234af2730e3a2ac2fff659dcfc85489b0292d2395f6382bab3a73d2f37
3
+ metadata.gz: f6db900740eb86bf00384ad3f97895ecd146d5f112f96db362c28a28cbfb391f
4
+ data.tar.gz: c4f4a09dd97c634b671434735896294c13f5ad3992d97378db3cde64e804efae
5
5
  SHA512:
6
- metadata.gz: 9a6f108363c5e35d96b5739184318260d64da36187a259449ac5fde602d6d70a16d7bfab01f64f4a8794fcbbfa49322bdfb13ae408a7ffd0299820a5eac2f806
7
- data.tar.gz: 9e6d545f778fd361853c082fcd1d67564d59edef0bbe88ac2f47189c0bcc1b1c4603f35374cf0d8728c455b8c0ed33f18e96eb54ddf5e8432a72a688d1684de8
6
+ metadata.gz: 15d1dfd04be33f629ec7f6f74ff7666175e39bd62e3dcb80f2d5ae936c86001ba479db6fe2a084839d7e12fedaede50b3d85c9c65d4ae9c88700127204c4a33e
7
+ data.tar.gz: c5e5b31671f907460705f3baac9e9ebc6a0142fb3d2678e1783b3b8a382e266cb06cf4e793a096768632b8451f2925d6968550c32ae5ef355738f3ee23e8153c
@@ -0,0 +1,31 @@
1
+ name: Publish to RubyGems
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ build:
8
+ name: Build + Publish
9
+ runs-on: ubuntu-latest
10
+ permissions:
11
+ packages: write
12
+ contents: read
13
+
14
+ steps:
15
+ - uses: actions/checkout@v3
16
+ - name: Set up Ruby 3.1
17
+ uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: 3.1
20
+ - run: bundle install
21
+
22
+ - name: Publish to RubyGems
23
+ run: |
24
+ mkdir -p $HOME/.gem
25
+ touch $HOME/.gem/credentials
26
+ chmod 0600 $HOME/.gem/credentials
27
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
28
+ gem build *.gemspec
29
+ gem push *.gem
30
+ env:
31
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -10,19 +10,34 @@ jobs:
10
10
  runs-on: ubuntu-latest
11
11
  strategy:
12
12
  matrix:
13
- ruby:
14
- - 2.7.1
13
+ ruby-version:
14
+ - 2.7.1 # AtCoder公式が使用しているrubyは2.7.1
15
+ - 3.1
15
16
  steps:
16
- - uses: actions/checkout@v2
17
- - name: Set up Ruby ${{ matrix.ruby }}
18
- uses: actions/setup-ruby@v1
17
+ - uses: actions/checkout@v3
18
+ - name: Set up Ruby ${{ matrix.ruby-version }}
19
+ uses: ruby/setup-ruby@v1
19
20
  with:
20
- ruby-version: ${{ matrix.ruby }}
21
- - name: Rspec with rake
21
+ ruby-version: ${{ matrix.ruby-version }}
22
+ - name: Bundle install
23
+ run: bundle install
24
+ - name: Run Rspec
22
25
  env:
23
26
  USER_NAME: ${{ secrets.USER_NAME }}
24
27
  PASSWORD: ${{ secrets.PASSWORD }}
25
28
  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
26
- run: |
27
- bundle install --jobs 4 --retry 3
28
- script -e -c rake
29
+ run: script -e -c "rake spec"
30
+ rubocop:
31
+ runs-on: ubuntu-latest
32
+ steps:
33
+ - uses: actions/checkout@v3
34
+ - uses: ruby/setup-ruby@v1
35
+ with:
36
+ ruby-version: 3.1
37
+ - name: Bundle install
38
+ run: bundle install
39
+ - name: Run rubocop
40
+ run: bundle exec rubocop
41
+
42
+
43
+
data/.gitignore CHANGED
@@ -7,7 +7,6 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  .idea
10
- .env
11
10
  # rspec failure tracking
12
11
  .rspec_status
13
12
  Gemfile.lock
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: 7
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
+ Green Day creates workspaces and tests for Atcoder contests
3
3
  (日本語で解説した記事は[こちら](https://qiita.com/QWYNG/items/0e2e6b72bd1969d0d751))
4
4
  ## Installation
5
5
 
@@ -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+")
@@ -86,8 +84,6 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
86
84
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
87
85
 
88
86
  ## Contributing
89
- You need create `.env` and set `USER_NAME` and `PASSWORD` for spec. see `env.sample`
90
- Those env is already set as secret on CI.
91
87
  Bug reports and pull requests are welcome on GitHub at https://github.com/QWYNG/green_day. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
92
88
 
93
89
  ## License
@@ -96,4 +92,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
96
92
 
97
93
  ## Code of Conduct
98
94
 
99
- 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,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
@@ -26,15 +27,20 @@ Gem::Specification.new do |spec|
26
27
  spec.require_paths = ['lib']
27
28
 
28
29
  spec.add_dependency 'colorize'
29
- spec.add_dependency 'faraday', '< 1.0'
30
+ spec.add_dependency 'faraday'
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'
44
+ spec.add_development_dependency 'vcr'
45
+ spec.metadata['rubygems_mfa_required'] = 'true'
40
46
  end
@@ -20,28 +20,9 @@ module GreenDay
20
20
  end
21
21
  end
22
22
 
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'..'Z').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]
23
+ def get_parsed_body(path)
24
+ res = client.get(path)
25
+ Nokogiri::HTML.parse(res.body)
45
26
  end
46
27
 
47
28
  def login(username, password)
@@ -54,7 +35,7 @@ module GreenDay
54
35
 
55
36
  unless login_succeed?
56
37
  ## ex error:Username or Password is incorrect
57
- raise Error, CGI.unescape(select_flash_cookie.value).split('.').shift
38
+ raise Error, CGI.unescape(flash_cookie.value).split('.').shift
58
39
  end
59
40
 
60
41
  cookie_jar.save(COOKIE_FILE_NAME)
@@ -83,17 +64,13 @@ module GreenDay
83
64
  end
84
65
 
85
66
  def login_succeed?
86
- flash_cookie = select_flash_cookie
87
67
  flash_cookie.value.include?('Welcome')
88
68
  end
89
69
 
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)
70
+ def flash_cookie
71
+ @flash_cookie ||= cookie_jar.cookies("#{ATCODER_ENDPOINT}/login").find do |cookie|
72
+ cookie.name == 'REVEL_FLASH'
73
+ end
97
74
  end
98
75
  end
99
76
  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,37 @@ 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
- Parallel.each(contest.tasks) do |task|
34
- create_submit_file!(contest_name, task)
35
- create_spec_file!(contest_name, task)
32
+ Parallel.each(contest.tasks, in_threads: THREAD_COUNT) do |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|
56
- f.write(test)
57
- end
52
+ File.write(spec_file_path(task), test)
58
53
  end
59
54
 
60
- def submit_file_path(contest_name, task)
61
- "#{contest_name}/#{task.code}.rb"
55
+ def submit_file_path(task)
56
+ "#{task.contest.name}/#{task.name}.rb"
62
57
  end
63
58
 
64
- def spec_file_path(contest_name, task)
65
- "#{contest_name}/spec/#{task.code}_spec.rb"
59
+ def spec_file_path(task)
60
+ "#{task.contest.name}/spec/#{task.name}_spec.rb"
66
61
  end
67
62
  end
68
63
  end
@@ -1,18 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'atcoder_client'
3
+ require 'forwardable'
4
4
  require_relative 'task'
5
5
 
6
6
  module GreenDay
7
7
  class Contest
8
- attr_reader :atcoder_client, :name, :tasks
8
+ extend Forwardable
9
+ delegate get_parsed_body: :@client
9
10
 
10
- def initialize(contest_name, client)
11
- raise GreenDay::Error 'cant find contest' unless client.contest_exist?(contest_name)
11
+ attr_reader :name, :tasks
12
12
 
13
+ def initialize(contest_name, client)
14
+ @client = client
13
15
  @name = contest_name
14
- @tasks = Parallel.map(client.fetch_task_codes(self)) do |task_code|
15
- Task.new(self, task_code, client)
16
+
17
+ task_names_and_paths = fetch_task_names_and_paths
18
+ @tasks =
19
+ Parallel.map(task_names_and_paths,
20
+ in_threads: THREAD_COUNT) do |task_name, task_path|
21
+ Task.new(self, task_name, task_path, @client)
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def fetch_task_names_and_paths
28
+ body = get_parsed_body("contests/#{name}/tasks")
29
+ task_elements = body.search('tbody tr td:first a')
30
+
31
+ task_elements.to_h do |element|
32
+ [element.text, element[:href]]
16
33
  end
17
34
  end
18
35
  end
@@ -1,26 +1,37 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'forwardable'
4
+
3
5
  module GreenDay
4
6
  class Task
5
- attr_reader :contest, :code, :input_output_hash
6
- def initialize(contest, code, client)
7
+ extend Forwardable
8
+ delegate get_parsed_body: :@client
9
+
10
+ attr_reader :contest, :name, :path, :sample_answers
11
+
12
+ def initialize(contest, name, path, client)
13
+ @client = client
7
14
  @contest = contest
8
- @code = code
9
- @input_output_hash = create_input_output_hash(client)
15
+ @name = name
16
+ @path = path
17
+ @sample_answers = create_sample_answers_hash
10
18
  end
11
19
 
12
20
  private
13
21
 
14
- def create_input_output_hash(client)
15
- input_samples, output_samples =
16
- client.fetch_inputs_and_outputs(contest, self)
22
+ def create_sample_answers_hash
23
+ input_samples, output_samples = fetch_inputs_and_outputs
24
+
25
+ input_samples.zip(output_samples).to_h
26
+ end
27
+
28
+ def fetch_inputs_and_outputs
29
+ body = get_parsed_body(path)
30
+ samples = body.css('.lang-ja > .part > section > pre').map { |e| e.children.text }
17
31
 
18
- hash = {}
19
- input_samples.zip(output_samples).each do |input, output|
20
- hash[input] = output
21
- end
32
+ inputs, outputs = samples.partition.with_index { |_sample, i| i.even? }
22
33
 
23
- hash
34
+ [inputs, outputs]
24
35
  end
25
36
  end
26
37
  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.5.0'
5
5
  end
data/lib/green_day.rb CHANGED
@@ -5,4 +5,5 @@ require_relative 'green_day/cli'
5
5
 
6
6
  module GreenDay
7
7
  class Error < StandardError; end
8
+ THREAD_COUNT = 6 # There are usually six questions on Atcoder.
8
9
  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.5.0
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: 2022-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: faraday
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "<"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "<"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday-cookie_jar
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -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,48 @@ 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'
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'
181
237
  description: CLI tool for AtCoder and Ruby
182
238
  email:
183
239
  - ikusawasi@gmail.com
@@ -186,7 +242,7 @@ executables:
186
242
  extensions: []
187
243
  extra_rdoc_files: []
188
244
  files:
189
- - ".env.sample"
245
+ - ".github/workflows/publish_to_rubygems.yml"
190
246
  - ".github/workflows/ruby.yml"
191
247
  - ".gitignore"
192
248
  - ".rspec"
@@ -204,7 +260,6 @@ files:
204
260
  - lib/green_day/atcoder_client.rb
205
261
  - lib/green_day/cli.rb
206
262
  - lib/green_day/contest.rb
207
- - lib/green_day/snippet_builder.rb
208
263
  - lib/green_day/task.rb
209
264
  - lib/green_day/test_builder.rb
210
265
  - lib/green_day/version.rb
@@ -214,6 +269,7 @@ licenses:
214
269
  metadata:
215
270
  homepage_uri: https://github.com/QWYNG/green_day
216
271
  source_code_uri: https://github.com/QWYNG/green_day
272
+ rubygems_mfa_required: 'true'
217
273
  post_install_message:
218
274
  rdoc_options: []
219
275
  require_paths:
@@ -222,14 +278,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
222
278
  requirements:
223
279
  - - ">="
224
280
  - !ruby/object:Gem::Version
225
- version: '0'
281
+ version: 2.7.1
226
282
  required_rubygems_version: !ruby/object:Gem::Requirement
227
283
  requirements:
228
284
  - - ">="
229
285
  - !ruby/object:Gem::Version
230
286
  version: '0'
231
287
  requirements: []
232
- rubygems_version: 3.1.2
288
+ rubygems_version: 3.3.7
233
289
  signing_key:
234
290
  specification_version: 4
235
291
  summary: CLI tool for AtCoder and Ruby
data/.env.sample DELETED
@@ -1,3 +0,0 @@
1
- # for spec
2
- USER_NAME=
3
- PASSWORD=
@@ -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