green_day 0.2.0 → 0.3.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: 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