green_day 0.2.0 → 0.3.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: cb3f3fbe2293b67258b8ac02f28db7c0660eb4f7a7a18d07816bf4b3e1e616df
4
- data.tar.gz: a13045a2ffc2266ccd2ebbd4eea4ad99605af4f24de9fd3a1b2b503ab718b872
3
+ metadata.gz: dec8f7c9c721bbd5e652f18959de01d9a90d6ec3a1d7caf57eed76aa31ad9378
4
+ data.tar.gz: c2afef234af2730e3a2ac2fff659dcfc85489b0292d2395f6382bab3a73d2f37
5
5
  SHA512:
6
- metadata.gz: aa65f82bc5b568a4d954b5a1546020f327b06ece50089d905c0877ae08ba08780456668dc6f219830284c86e012318251714e2319812714a7f9a9a17de91fd6a
7
- data.tar.gz: 1c08eeacdc7e22142ff5522f2bac98af0c68914d62ccf629bda4b60a5d3d10385ed8cec972687b7123bc4cc1070a81c41c9a90995f1ab6ed9169a4f2ca98cd54
6
+ metadata.gz: 9a6f108363c5e35d96b5739184318260d64da36187a259449ac5fde602d6d70a16d7bfab01f64f4a8794fcbbfa49322bdfb13ae408a7ffd0299820a5eac2f806
7
+ data.tar.gz: 9e6d545f778fd361853c082fcd1d67564d59edef0bbe88ac2f47189c0bcc1b1c4603f35374cf0d8728c455b8c0ed33f18e96eb54ddf5e8432a72a688d1684de8
@@ -25,4 +25,4 @@ jobs:
25
25
  CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
26
26
  run: |
27
27
  bundle install --jobs 4 --retry 3
28
- bundle exec rake
28
+ script -e -c rake
data/README.md CHANGED
@@ -18,11 +18,11 @@ Or install it yourself as:
18
18
  $ gem install green_day
19
19
 
20
20
  ## Usage
21
- login(this command stores your cookie as `cookie-store` in current directory)
21
+ login(this command stores your cookie as `.cookie-store` in current directory)
22
22
 
23
23
  $ bundle exec green_day login
24
24
 
25
- If you want to delete session, remove `cookie-store`
25
+ If you want to delete session, remove `.cookie-store`
26
26
 
27
27
  This command creates directory and spec.
28
28
 
@@ -25,9 +25,11 @@ Gem::Specification.new do |spec|
25
25
  spec.bindir = 'exe'
26
26
  spec.require_paths = ['lib']
27
27
 
28
+ spec.add_dependency 'colorize'
28
29
  spec.add_dependency 'faraday', '< 1.0'
29
30
  spec.add_dependency 'faraday-cookie_jar'
30
31
  spec.add_dependency 'nokogiri'
32
+ spec.add_dependency 'parallel'
31
33
  spec.add_dependency 'rspec', '~> 3.0'
32
34
  spec.add_dependency 'thor'
33
35
  spec.add_development_dependency 'bundler', '~> 2.0'
@@ -8,7 +8,7 @@ require 'nokogiri'
8
8
  module GreenDay
9
9
  class AtcoderClient
10
10
  ATCODER_ENDPOINT = 'https://atcoder.jp'
11
- COOKIE_DB = 'cookie-store'
11
+ COOKIE_FILE_NAME = '.cookie-store'
12
12
  attr_reader :client, :cookie_jar
13
13
 
14
14
  def initialize
@@ -57,14 +57,20 @@ module GreenDay
57
57
  raise Error, CGI.unescape(select_flash_cookie.value).split('.').shift
58
58
  end
59
59
 
60
- cookie_jar.save(COOKIE_DB)
60
+ cookie_jar.save(COOKIE_FILE_NAME)
61
61
  end
62
62
 
63
63
  private
64
64
 
65
65
  def create_or_load_cookie_jar
66
66
  jar = HTTP::CookieJar.new
67
- jar.load(COOKIE_DB) if File.exist?(COOKIE_DB)
67
+ if File.exist?(COOKIE_FILE_NAME)
68
+ jar.load(COOKIE_FILE_NAME)
69
+ elsif File.exist?('cookie-store')
70
+ warn 'cookie-store needs rename .cookie-store'
71
+ jar.load('cookie-store')
72
+ end
73
+
68
74
  jar
69
75
  end
70
76
 
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'thor'
4
+ require 'parallel'
5
+ require 'colorize'
6
+ require 'io/console'
4
7
  require_relative 'atcoder_client'
5
8
  require_relative 'contest'
6
9
  require_relative 'test_builder'
@@ -11,22 +14,28 @@ module GreenDay
11
14
  desc 'login Atcoder', 'login Atcoder and save session'
12
15
  def login
13
16
  print 'username:'
14
- username = STDIN.gets.chomp!
17
+ username = STDIN.gets(chomp: true)
15
18
  print 'password:'
16
- password = STDIN.gets.chomp!
19
+ password = STDIN.noecho { |stdin| stdin.gets(chomp: true) }.tap { puts }
17
20
 
18
21
  AtcoderClient.new.login(username, password)
22
+ puts(
23
+ "Successfully created #{AtcoderClient::COOKIE_FILE_NAME}"
24
+ .colorize(:green)
25
+ )
19
26
  end
20
27
 
21
28
  desc 'new [contest name]', 'create contest workspace and spec'
22
29
  def new(contest_name)
23
- contest = Contest.new(contest_name)
30
+ contest = Contest.new(contest_name, AtcoderClient.new)
24
31
  FileUtils.makedirs("#{contest_name}/spec")
25
32
 
26
- contest.tasks.each do |task|
33
+ Parallel.each(contest.tasks) do |task|
27
34
  create_submit_file!(contest_name, task)
28
35
  create_spec_file!(contest_name, task)
29
36
  end
37
+
38
+ puts "Successfully created #{contest_name} directory".colorize(:green)
30
39
  end
31
40
 
32
41
  private
@@ -7,13 +7,12 @@ module GreenDay
7
7
  class Contest
8
8
  attr_reader :atcoder_client, :name, :tasks
9
9
 
10
- def initialize(contest_name)
11
- client = AtcoderClient.new
10
+ def initialize(contest_name, client)
12
11
  raise GreenDay::Error 'cant find contest' unless client.contest_exist?(contest_name)
13
12
 
14
13
  @name = contest_name
15
- @tasks = client.fetch_task_codes(self).map do |task_code|
16
- Task.new(self, task_code)
14
+ @tasks = Parallel.map(client.fetch_task_codes(self)) do |task_code|
15
+ Task.new(self, task_code, client)
17
16
  end
18
17
  end
19
18
  end
@@ -3,17 +3,15 @@
3
3
  module GreenDay
4
4
  class Task
5
5
  attr_reader :contest, :code, :input_output_hash
6
- def initialize(contest, code)
6
+ def initialize(contest, code, client)
7
7
  @contest = contest
8
8
  @code = code
9
- @input_output_hash = create_input_output_hash
9
+ @input_output_hash = create_input_output_hash(client)
10
10
  end
11
11
 
12
12
  private
13
13
 
14
- def create_input_output_hash
15
- client = AtcoderClient.new
16
-
14
+ def create_input_output_hash(client)
17
15
  input_samples, output_samples =
18
16
  client.fetch_inputs_and_outputs(contest, self)
19
17
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GreenDay
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.0'
5
5
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: green_day
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.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-07 00:00:00.000000000 Z
11
+ date: 2020-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: colorize
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: faraday
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,20 @@ dependencies:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: parallel
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: rspec
57
85
  requirement: !ruby/object:Gem::Requirement