github-nippou 3.1.0 → 3.2.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
  SHA1:
3
- metadata.gz: 52cfbeb7dc03f4ba35b8ba2fc510a737a6b1dac2
4
- data.tar.gz: c801c5290db58498cb1bac1215fc4519e3ec3570
3
+ metadata.gz: 349f38fdb868cf41f91c42342cb661ed61b0b83b
4
+ data.tar.gz: 3c367704be774eaaec5fe1c7a1d06e257bbc1ae1
5
5
  SHA512:
6
- metadata.gz: 47f1175a788ebe3eb073c8a6b4e454c74211c6dfbe629db7ef9fad1c1924026f415403ecb88dc6598f2f01285d3fd8f6e2bb04099b7a8f728ceeaa4da5ef3953
7
- data.tar.gz: 14acc2eea4b20c5dae595413ef79fe363819569b718d54acb666f84b1b992d9a4492e5983402a6771f30c6ea1da866dd0e331eb0bb469fdf749bad1ce18d78c9
6
+ metadata.gz: 96d3efeaee086c9271d186e9e3fb6fd9ac1b08a1fef591b14949cd3f355181e47098dcac6ac2402819ee2f67b80fceefba3e4108898002244872c158371335f2
7
+ data.tar.gz: e671dfbd90b1ed1d265aced4f02aeb3fd22328aa7e1b8c468b3873aa7eacc27198693aacd856f66e0bc7e655aded85f33e44c809ee857d87e44ea2a63377f777
data/.gitignore CHANGED
@@ -1,4 +1,6 @@
1
1
  *.gem
2
2
  /.bundle
3
3
  /.envrc
4
+ /.yardoc
5
+ /doc
4
6
  /vendor/bundle
data/Dockerfile CHANGED
@@ -1,7 +1,7 @@
1
1
  FROM ruby:2.4-alpine
2
2
  LABEL maintainer "masutaka.net@gmail.com"
3
3
 
4
- ENV VERSION=3.1.0
4
+ ENV VERSION=3.2.0
5
5
 
6
6
  RUN apk add --update --no-cache git && \
7
7
  gem install -N github-nippou -v ${VERSION}
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- github-nippou (3.1.0)
4
+ github-nippou (3.2.0)
5
5
  activesupport
6
6
  highline
7
7
  launchy
@@ -54,6 +54,7 @@ GEM
54
54
  thread_safe (0.3.6)
55
55
  tzinfo (1.2.3)
56
56
  thread_safe (~> 0.1)
57
+ yard (0.9.9)
57
58
 
58
59
  PLATFORMS
59
60
  ruby
@@ -63,6 +64,7 @@ DEPENDENCIES
63
64
  github-nippou!
64
65
  rake
65
66
  rspec
67
+ yard
66
68
 
67
69
  BUNDLED WITH
68
70
  1.15.3
data/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  [gem-link]: http://badge.fury.io/rb/github-nippou
13
13
  [dockerhub]: https://hub.docker.com/r/masutaka/github-nippou/
14
14
 
15
- Displays today's your GitHub action.
15
+ Print today's your GitHub action.
16
16
 
17
17
  This is a helpful tool when you write a daily report in reference to
18
18
  GitHub. Nippou is a japanese word which means a daily report.
@@ -35,8 +35,13 @@ Or install it yourself as:
35
35
 
36
36
  ## Setup
37
37
 
38
- $ git config --global github-nippou.user [Your GitHub account]
39
- $ git config --global github-nippou.token [Your GitHub access token]
38
+ $ github-nippou init
39
+
40
+ The initialization will be update your `~/.gitconfig`.
41
+
42
+ 1. Add `github-nippou.user`
43
+ 2. Add `github-nippou.token`
44
+ 3. Create Gist, and add `github-nippou.settings-gist-id` for customizing output format (optional)
40
45
 
41
46
  ## Usage
42
47
 
@@ -44,16 +49,16 @@ Or install it yourself as:
44
49
  $ github-nippou help
45
50
  Commands:
46
51
  github-nippou help [COMMAND] # Describe available commands or one specific command
47
- github-nippou init # Synchronize github-nippou settings on your gist
48
- github-nippou list # Displays today's GitHub events formatted for Nippou (Default)
52
+ github-nippou init # Initialize github-nippou settings
53
+ github-nippou list # Print today's your GitHub action (Default)
49
54
  github-nippou open-settings # Open settings url with web browser
50
- github-nippou version # Displays version
55
+ github-nippou version # Print version
51
56
 
52
57
  Options:
53
58
  s, [--since-date=SINCE_DATE] # Retrieves GitHub user_events since the date
54
- # Default: 20170807
59
+ # Default: 20170819
55
60
  u, [--until-date=UNTIL_DATE] # Retrieves GitHub user_events until the date
56
- # Default: 20170807
61
+ # Default: 20170819
57
62
  d, [--debug], [--no-debug] # Debug mode
58
63
 
59
64
  ```
@@ -65,32 +70,11 @@ $ github-nippou
65
70
 
66
71
  ### masutaka/github-nippou
67
72
 
68
- * [v3.0.0](https://github.com/masutaka/github-nippou/issues/59) by masutaka
69
- * [Enable to inject settings_gist_id instead of the settings](https://github.com/masutaka/github-nippou/pull/63) by masutaka **merged!**
70
- * [Add y/n prompt to sub command \`init\`](https://github.com/masutaka/github-nippou/pull/64) by masutaka **merged!**
71
- * [Add sub command \`open-settings\`](https://github.com/masutaka/github-nippou/pull/65) by masutaka **merged!**
72
- * [Dockerize](https://github.com/masutaka/github-nippou/pull/66) by masutaka **merged!**
73
- ```
74
-
75
- ## Customize output format
76
-
77
- ```
78
- $ github-nippou init
79
- This command will create a gist and update your `~/.gitconfig`.
80
- Are you sure? [y/n] y
81
- The github-nippou settings was created on https://gist.github.com/ecfa35cb546d8462277d133a91b13be9
82
-
83
- And the gist_id was appended to your `~/.gitconfig`. You can
84
- check the gist_id with following command.
85
-
86
- $ git config --global github-nippou.settings-gist-id
87
- ```
88
-
89
- Open the Gist URL with your web browser.
90
-
91
- ```
92
- $ github-nippou open-settings
93
- Open https://gist.github.com/ecfa35cb546d8462277d133a91b13be9
73
+ * [v3.0.0](https://github.com/masutaka/github-nippou/issues/59) by @[masutaka](https://github.com/masutaka)
74
+ * [Enable to inject settings_gist_id instead of the settings](https://github.com/masutaka/github-nippou/pull/63) by @[masutaka](https://github.com/masutaka) **merged!**
75
+ * [Add y/n prompt to sub command \`init\`](https://github.com/masutaka/github-nippou/pull/64) by @[masutaka](https://github.com/masutaka) **merged!**
76
+ * [Add sub command \`open-settings\`](https://github.com/masutaka/github-nippou/pull/65) by @[masutaka](https://github.com/masutaka) **merged!**
77
+ * [Dockerize](https://github.com/masutaka/github-nippou/pull/66) by @[masutaka](https://github.com/masutaka) **merged!**
94
78
  ```
95
79
 
96
80
  ## Docker
@@ -30,4 +30,5 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency 'bundler'
31
31
  spec.add_development_dependency 'rake'
32
32
  spec.add_development_dependency 'rspec'
33
+ spec.add_development_dependency 'yard'
33
34
  end
@@ -3,6 +3,7 @@ require 'github/nippou/concerns/string_markdown'
3
3
 
4
4
  require 'github/nippou/commands'
5
5
  require 'github/nippou/format'
6
+ require 'github/nippou/init'
6
7
  require 'github/nippou/settings'
7
8
  require 'github/nippou/user_events'
8
9
  require 'github/nippou/version'
@@ -1,4 +1,3 @@
1
- require 'highline/import'
2
1
  require 'launchy'
3
2
  require 'parallel'
4
3
  require 'thor'
@@ -16,13 +15,13 @@ module Github
16
15
  aliases: :u, desc: 'Retrieves GitHub user_events until the date'
17
16
  class_option :debug, type: :boolean, default: false, aliases: :d, desc: 'Debug mode'
18
17
 
19
- desc 'list', "Displays today's GitHub events formatted for Nippou (Default)"
18
+ desc 'list', "Print today's your GitHub action (Default)"
20
19
  def list
21
20
  lines = []
22
21
  mutex = Mutex.new
23
- format = Format.new(client, thread_num, settings, debug)
22
+ format = Format.new(settings, debug)
24
23
 
25
- Parallel.each_with_index(user_events, in_threads: thread_num) do |user_event, i|
24
+ Parallel.each_with_index(user_events, in_threads: settings.thread_num) do |user_event, i|
26
25
  # Contain GitHub access.
27
26
  # So should not put into the mutex block.
28
27
  line = format.line(user_event, i)
@@ -32,46 +31,9 @@ module Github
32
31
  puts format.all(lines)
33
32
  end
34
33
 
35
- desc 'init', 'Synchronize github-nippou settings on your gist'
34
+ desc 'init', 'Initialize github-nippou settings'
36
35
  def init
37
- unless client.scopes.include? 'gist'
38
- puts <<~MESSAGE
39
- ** Gist scope required.
40
-
41
- You need personal access token which has `gist` scope.
42
- Please add `gist` scope to your personal access token, visit
43
- https://github.com/settings/tokens
44
- MESSAGE
45
- exit!
46
- end
47
-
48
- if settings.gist_id.present?
49
- puts <<~MESSAGE
50
- ** Already initialized.
51
-
52
- Your `~/.gitconfig` already has gist_id as `github-nippou.settings-gist-id`.
53
- MESSAGE
54
- exit
55
- end
56
-
57
- puts 'This command will create a gist and update your `~/.gitconfig`.'
58
-
59
- unless HighLine.agree('Are you sure? [y/n] ')
60
- puts 'Canceled.'
61
- abort
62
- end
63
-
64
- gist = settings.create_gist
65
- `git config --global github-nippou.settings-gist-id #{gist.id}`
66
-
67
- puts <<~MESSAGE
68
- The github-nippou settings was created on #{gist.html_url}
69
-
70
- And the gist_id was appended to your `~/.gitconfig`. You can
71
- check the gist_id with following command.
72
-
73
- $ git config --global github-nippou.settings-gist-id
74
- MESSAGE
36
+ Init.new(settings: settings).run
75
37
  end
76
38
 
77
39
  desc 'open-settings', 'Open settings url with web browser'
@@ -80,7 +42,7 @@ module Github
80
42
  Launchy.open(settings.url)
81
43
  end
82
44
 
83
- desc 'version', 'Displays version'
45
+ desc 'version', 'Print version'
84
46
  def version
85
47
  puts VERSION
86
48
  end
@@ -89,67 +51,12 @@ module Github
89
51
 
90
52
  def user_events
91
53
  @user_events ||= UserEvents.new(
92
- client, user, options[:since_date], options[:until_date]
54
+ settings.client, settings.user, options[:since_date], options[:until_date]
93
55
  ).collect
94
56
  end
95
57
 
96
- def client
97
- @client ||= Octokit::Client.new(login: user, access_token: access_token)
98
- end
99
-
100
- def user
101
- @user ||=
102
- case
103
- when ENV['GITHUB_NIPPOU_USER']
104
- ENV['GITHUB_NIPPOU_USER']
105
- when !`git config github-nippou.user`.chomp.empty?
106
- `git config github-nippou.user`.chomp
107
- else
108
- puts <<~MESSAGE
109
- ** User required.
110
-
111
- Please set github-nippou.user to your `~/.gitconfig`.
112
- $ git config --global github-nippou.user [Your GitHub account]
113
- MESSAGE
114
- exit!
115
- end
116
- end
117
-
118
- def access_token
119
- @access_token ||=
120
- case
121
- when ENV['GITHUB_NIPPOU_ACCESS_TOKEN']
122
- ENV['GITHUB_NIPPOU_ACCESS_TOKEN']
123
- when !`git config github-nippou.token`.chomp.empty?
124
- `git config github-nippou.token`.chomp
125
- else
126
- puts <<~MESSAGE
127
- ** Authorization required.
128
-
129
- Please set github-nippou.token to your `~/.gitconfig`.
130
- $ git config --global github-nippou.token [Your GitHub access token]
131
-
132
- To get new token with `repo` and `gist` scope, visit
133
- https://github.com/settings/tokens/new
134
- MESSAGE
135
- exit!
136
- end
137
- end
138
-
139
58
  def settings
140
- @settings ||= Settings.new(client: client)
141
- end
142
-
143
- def thread_num
144
- @thread_num ||=
145
- case
146
- when ENV['GITHUB_NIPPOU_THREAD_NUM']
147
- ENV['GITHUB_NIPPOU_THREAD_NUM']
148
- when !`git config github-nippou.thread-num`.chomp.empty?
149
- `git config github-nippou.thread-num`.chomp
150
- else
151
- 5
152
- end.to_i
59
+ @settings ||= Settings.new
153
60
  end
154
61
 
155
62
  def debug
@@ -4,19 +4,15 @@ module Github
4
4
  using SawyerResourceGithub
5
5
  using StringMarkdown
6
6
 
7
- # @param client [Octokit::Client]
8
- # @param thread_num [Integer]
9
7
  # @param settings [Settings]
10
8
  # @param debug [Boolean]
11
- def initialize(client, thread_num, settings, debug)
12
- @client = client
13
- @thread_num = thread_num
9
+ def initialize(settings, debug)
14
10
  @settings = settings
15
11
  @debug = debug
16
12
  end
17
13
 
18
14
  def line(user_event, i)
19
- STDERR.puts "#{i % @thread_num} : #{user_event.html_url}\n" if @debug
15
+ STDERR.puts "#{i % settings.thread_num} : #{user_event.html_url}\n" if @debug
20
16
  issue = issue(user_event)
21
17
 
22
18
  line = {
@@ -62,12 +58,12 @@ module Github
62
58
  def issue(user_event)
63
59
  case
64
60
  when user_event.payload.pull_request
65
- @client.pull_request(user_event.repo.name, user_event.payload.pull_request.number)
61
+ settings.client.pull_request(user_event.repo.name, user_event.payload.pull_request.number)
66
62
  when user_event.payload.issue.pull_request
67
63
  # a pull_request like an issue
68
- @client.pull_request(user_event.repo.name, user_event.payload.issue.number)
64
+ settings.client.pull_request(user_event.repo.name, user_event.payload.issue.number)
69
65
  else
70
- @client.issue(user_event.repo.name, user_event.payload.issue.number)
66
+ settings.client.issue(user_event.repo.name, user_event.payload.issue.number)
71
67
  end
72
68
  end
73
69
 
@@ -0,0 +1,165 @@
1
+ require 'highline/import'
2
+
3
+ module Github
4
+ module Nippou
5
+ class Init
6
+ # @param settings [Settings]
7
+ def initialize(settings:)
8
+ @settings = settings
9
+ end
10
+
11
+ # Run the initialization
12
+ #
13
+ # @raise [SystemExit] failed the initialization,
14
+ # or don't need, or canceled
15
+ def run
16
+ puts '** github-nippou Initialization **'
17
+ set_user!
18
+ sleep 0.5
19
+ set_access_token!
20
+ sleep 0.5
21
+ create_and_set_gist!
22
+ end
23
+
24
+ private
25
+
26
+ attr_reader :settings
27
+
28
+ def set_user!
29
+ puts <<~MESSAGE
30
+
31
+ == [Step: 1/3] GitHub user ==
32
+
33
+ MESSAGE
34
+
35
+ begin
36
+ settings.user(verbose: false)
37
+ msg = 'Already initialized.'
38
+ rescue Github::Nippou::Settings::GettingUserError
39
+ user = HighLine.new.ask("What's your GitHub account? ")
40
+
41
+ if user.present?
42
+ puts <<~MESSAGE
43
+
44
+ The following command will be executed.
45
+
46
+ $ git config --global github-nippou.user #{user}
47
+
48
+ MESSAGE
49
+
50
+ unless HighLine.agree('Are you sure? [y/n] ')
51
+ puts 'Canceled.'
52
+ abort
53
+ end
54
+
55
+ `git config --global github-nippou.user #{user}`
56
+ msg = 'Thanks!'
57
+ end
58
+ end
59
+
60
+ puts <<~MESSAGE
61
+ #{msg} You can get it with the following command.
62
+
63
+ $ git config --global github-nippou.user
64
+
65
+ MESSAGE
66
+ end
67
+
68
+ def set_access_token!
69
+ puts <<~MESSAGE
70
+
71
+ == [Step: 2/3] GitHub personal access token ==
72
+
73
+ To get new token with `repo` and `gist` scope, visit
74
+ https://github.com/settings/tokens/new
75
+
76
+ MESSAGE
77
+
78
+ begin
79
+ settings.access_token(verbose: false)
80
+ msg = 'Already initialized.'
81
+ rescue Github::Nippou::Settings::GettingAccessTokenError
82
+ token = HighLine.new.ask("What's your GitHub personal access token? ")
83
+
84
+ if token.present?
85
+ puts <<~MESSAGE
86
+
87
+ The following command will be executed.
88
+
89
+ $ git config --global github-nippou.token #{token}
90
+
91
+ MESSAGE
92
+
93
+ unless HighLine.agree('Are you sure? [y/n] ')
94
+ puts 'Canceled.'
95
+ abort
96
+ end
97
+
98
+ `git config --global github-nippou.token #{token}`
99
+ msg = 'Thanks!'
100
+ end
101
+ end
102
+
103
+ puts <<~MESSAGE
104
+ #{msg} You can get it with the following command.
105
+
106
+ $ git config --global github-nippou.token
107
+
108
+ MESSAGE
109
+
110
+ unless settings.client.scopes.include?('repo') &&
111
+ settings.client.scopes.include?('gist')
112
+ puts <<~MESSAGE
113
+ !!!! `repo` and `gist` scopes are required. !!!!
114
+
115
+ You need personal access token which has `repo` and `gist`
116
+ scopes. Please add these scopes to your personal access
117
+ token, visit https://github.com/settings/tokens
118
+
119
+ MESSAGE
120
+ abort
121
+ end
122
+ end
123
+
124
+ def create_and_set_gist!
125
+ puts <<~MESSAGE
126
+
127
+ == [Step: 3/3] Gist (optional) ==
128
+
129
+ MESSAGE
130
+
131
+ if settings.gist_id.present?
132
+ msg = 'Already initialized.'
133
+ else
134
+ puts <<~MESSAGE
135
+ 1. Create a gist with the content of #{settings.default_url}
136
+ 2. The following command will be executed
137
+
138
+ $ git config --global github-nippou.settings-gist-id <created gist id>
139
+
140
+ MESSAGE
141
+
142
+ unless HighLine.agree('Are you sure? [y/n] ')
143
+ puts 'Canceled.'
144
+ abort
145
+ end
146
+
147
+ gist = settings.create_gist
148
+ `git config --global github-nippou.settings-gist-id #{gist.id}`
149
+ msg = 'Thanks!'
150
+ end
151
+
152
+ puts <<~MESSAGE
153
+ #{msg} You can get it with the following command.
154
+
155
+ $ git config --global github-nippou.settings-gist-id
156
+
157
+ And you can easily open the gist URL with web browser.
158
+
159
+ $ github-nippou open-settings
160
+
161
+ MESSAGE
162
+ end
163
+ end
164
+ end
165
+ end
@@ -4,9 +4,51 @@ require 'ostruct'
4
4
  module Github
5
5
  module Nippou
6
6
  class Settings
7
- # @param client [Octokit::Client]
8
- def initialize(client:)
9
- @client = client
7
+ class GettingUserError < SystemExit; end
8
+ class GettingAccessTokenError < SystemExit; end
9
+
10
+ # Getting GitHub user
11
+ #
12
+ # @param verbose [Boolean] Print error message
13
+ # @return [String]
14
+ # @raise [SystemExit] cannot get the user
15
+ def user(verbose: true)
16
+ @user ||=
17
+ case
18
+ when ENV['GITHUB_NIPPOU_USER']
19
+ ENV['GITHUB_NIPPOU_USER']
20
+ when !`git config github-nippou.user`.chomp.empty?
21
+ `git config github-nippou.user`.chomp
22
+ else
23
+ puts <<~MESSAGE if verbose
24
+ !!!! GitHub User required. Please execute the following command. !!!!
25
+
26
+ $ github-nippou init
27
+ MESSAGE
28
+ raise GettingUserError
29
+ end
30
+ end
31
+
32
+ # Getting GitHub personal access token
33
+ #
34
+ # @param verbose [Boolean] Print error message
35
+ # @return [String]
36
+ # @raise [SystemExit] cannot get the access token
37
+ def access_token(verbose: true)
38
+ @access_token ||=
39
+ case
40
+ when ENV['GITHUB_NIPPOU_ACCESS_TOKEN']
41
+ ENV['GITHUB_NIPPOU_ACCESS_TOKEN']
42
+ when !`git config github-nippou.token`.chomp.empty?
43
+ `git config github-nippou.token`.chomp
44
+ else
45
+ puts <<~MESSAGE if verbose
46
+ !!!! GitHub Personal access token required. Please execute the following command. !!!!
47
+
48
+ $ github-nippou init
49
+ MESSAGE
50
+ raise GettingAccessTokenError
51
+ end
10
52
  end
11
53
 
12
54
  # Getting gist id which has settings.yml
@@ -23,6 +65,28 @@ module Github
23
65
  end
24
66
  end
25
67
 
68
+ # Getting thread number
69
+ #
70
+ # @return [Integer]
71
+ def thread_num
72
+ @thread_num ||=
73
+ case
74
+ when ENV['GITHUB_NIPPOU_THREAD_NUM']
75
+ ENV['GITHUB_NIPPOU_THREAD_NUM']
76
+ when !`git config github-nippou.thread-num`.chomp.empty?
77
+ `git config github-nippou.thread-num`.chomp
78
+ else
79
+ 5
80
+ end.to_i
81
+ end
82
+
83
+ # Getting Octokit client
84
+ #
85
+ # return [Octokit::Client]
86
+ def client
87
+ @client ||= Octokit::Client.new(login: user, access_token: access_token)
88
+ end
89
+
26
90
  # Create gist with config/settings.yml
27
91
  #
28
92
  # @return [Sawyer::Resource]
@@ -42,10 +106,17 @@ module Github
42
106
  if gist_id
43
107
  client.gist(gist_id).html_url
44
108
  else
45
- "https://github.com/masutaka/github-nippou/blob/v#{VERSION}/config/settings.yml"
109
+ default_url
46
110
  end
47
111
  end
48
112
 
113
+ # Getting default settings url
114
+ #
115
+ # @return [String]
116
+ def default_url
117
+ "https://github.com/masutaka/github-nippou/blob/v#{VERSION}/config/settings.yml"
118
+ end
119
+
49
120
  # Getting format settings
50
121
  #
51
122
  # @return [OpenStruct]
@@ -62,8 +133,6 @@ module Github
62
133
 
63
134
  private
64
135
 
65
- attr_reader :client
66
-
67
136
  # Getting default settings.yml as Hash
68
137
  #
69
138
  # return [Hash]
@@ -1,5 +1,5 @@
1
1
  module Github
2
2
  module Nippou
3
- VERSION = '3.1.0'
3
+ VERSION = '3.2.0'
4
4
  end
5
5
  end
@@ -0,0 +1,9 @@
1
+ describe Github::Nippou::Init do
2
+ let(:client) { Octokit::Client.new(login: 'taro', access_token: '1234abcd') }
3
+ let(:settings) { double(:settings, user: nil, access_token: nil, gist_id: nil, thread_num: nil,
4
+ client: nil, create_gist: nil, url: nil, default_url: nil, format: nil, dictionary: nil) }
5
+ let(:init) { described_class.new(settings: settings) }
6
+
7
+ it_behaves_like 'a settings interface'
8
+ it_behaves_like 'a init interface'
9
+ end
@@ -1,49 +1,69 @@
1
1
  describe Github::Nippou::Settings do
2
- let(:client) { Octokit::Client.new(login: 'taro', access_token: '1234abcd') }
3
- let(:settings) { described_class.new(client: client) }
2
+ let(:settings) { described_class.new }
4
3
 
5
- after { ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = nil }
4
+ it_behaves_like 'a settings interface'
5
+
6
+ describe '#user' do
7
+ before { ENV['GITHUB_NIPPOU_USER'] = 'taro' }
8
+ subject { settings.user }
9
+ it { is_expected.to eq 'taro' }
10
+ after { ENV['GITHUB_NIPPOU_USER'] = nil }
11
+ end
12
+
13
+ describe '#access_token' do
14
+ before { ENV['GITHUB_NIPPOU_ACCESS_TOKEN'] = '1234abcd' }
15
+ subject { settings.access_token }
16
+ it { is_expected.to eq '1234abcd' }
17
+ after { ENV['GITHUB_NIPPOU_ACCESS_TOKEN'] = nil }
18
+ end
6
19
 
7
20
  describe '#gist_id' do
8
21
  before { ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = '0123456789' }
9
-
10
- it 'is valid' do
11
- expect(settings.gist_id).to eq '0123456789'
12
- end
22
+ subject { settings.gist_id }
23
+ it { is_expected.to eq '0123456789' }
24
+ after { ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = nil }
13
25
  end
14
26
 
15
- describe '#create_gist' do
16
- it 'responds to #create_gist' do
17
- expect(settings).to respond_to :create_gist
18
- end
27
+ describe '#thread_num' do
28
+ before { ENV['GITHUB_NIPPOU_THREAD_NUM'] = '10' }
29
+ subject { settings.thread_num }
30
+ it { is_expected.to eq 10 }
31
+ after { ENV['GITHUB_NIPPOU_THREAD_NUM'] = nil }
19
32
  end
20
33
 
21
34
  describe '#url' do
35
+ subject { settings.url }
36
+
22
37
  context 'given gist_id' do
23
38
  let(:gist_id) { '0123456789' }
24
39
 
25
40
  before do
26
- ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = gist_id
27
- response = OpenStruct.new(html_url: "https://gist.github.com/#{gist_id}")
28
- allow(client).to receive(:gist).and_return(response)
41
+ allow(settings).to receive(:gist_id).and_return gist_id
42
+ allow(settings).to receive_message_chain(:client, :gist) do
43
+ OpenStruct.new(html_url: "https://gist.github.com/#{gist_id}")
44
+ end
29
45
  end
30
46
 
31
- it 'is gist url' do
32
- expect(settings.url).to eq "https://gist.github.com/#{gist_id}"
33
- end
47
+ it { is_expected.to eq "https://gist.github.com/#{gist_id}" }
34
48
  end
35
49
 
36
50
  context 'given no gist_id' do
37
- it 'is github url' do
38
- expect(settings.url).to eq "https://github.com/masutaka/github-nippou/blob/v#{Github::Nippou::VERSION}/config/settings.yml"
39
- end
51
+ before { allow(settings).to receive(:gist_id).and_return nil }
52
+ it { is_expected.to eq "https://github.com/masutaka/github-nippou/blob/v#{Github::Nippou::VERSION}/config/settings.yml" }
40
53
  end
41
54
  end
42
55
 
56
+ describe '#default_url' do
57
+ subject { settings.default_url }
58
+ it { is_expected.to eq "https://github.com/masutaka/github-nippou/blob/v#{Github::Nippou::VERSION}/config/settings.yml" }
59
+ end
60
+
43
61
  describe '#format' do
44
62
  before do
45
- ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = '12345'
46
- allow(client).to receive(:gist).and_return( files: { 'settings.yml': { content: settings_yaml } } )
63
+ allow(settings).to receive(:gist_id).and_return '12345'
64
+ allow(settings).to receive_message_chain(:client, :gist) do
65
+ OpenStruct.new(files: { 'settings.yml': { content: settings_yaml } })
66
+ end
47
67
  end
48
68
 
49
69
  context 'given valid settings' do
@@ -69,8 +89,10 @@ describe Github::Nippou::Settings do
69
89
 
70
90
  describe '#dictionary' do
71
91
  before do
72
- ENV['GITHUB_NIPPOU_SETTINGS_GIST_ID'] = '12345'
73
- allow(client).to receive(:gist).and_return( files: { 'settings.yml': { content: settings_yaml } } )
92
+ allow(settings).to receive(:gist_id).and_return '12345'
93
+ allow(settings).to receive_message_chain(:client, :gist) do
94
+ OpenStruct.new(files: { 'settings.yml': { content: settings_yaml } })
95
+ end
74
96
  end
75
97
 
76
98
  context 'given valid settings' do
@@ -0,0 +1,4 @@
1
+ shared_examples_for 'a init interface' do
2
+ subject { init }
3
+ it { is_expected.to respond_to :run }
4
+ end
@@ -0,0 +1,13 @@
1
+ shared_examples_for 'a settings interface' do
2
+ subject { settings }
3
+ it { is_expected.to respond_to :user }
4
+ it { is_expected.to respond_to :access_token }
5
+ it { is_expected.to respond_to :gist_id }
6
+ it { is_expected.to respond_to :thread_num }
7
+ it { is_expected.to respond_to :client }
8
+ it { is_expected.to respond_to :create_gist }
9
+ it { is_expected.to respond_to :url }
10
+ it { is_expected.to respond_to :default_url }
11
+ it { is_expected.to respond_to :format }
12
+ it { is_expected.to respond_to :dictionary }
13
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-nippou
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takashi Masuda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-09 00:00:00.000000000 Z
11
+ date: 2017-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: yard
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'
139
153
  description: |2
140
154
  This is a helpful tool when you write a daily report in reference to
141
155
  GitHub. nippou is a japanese word which means a daily report.
@@ -167,13 +181,17 @@ files:
167
181
  - lib/github/nippou/concerns/sawyer_resource_github.rb
168
182
  - lib/github/nippou/concerns/string_markdown.rb
169
183
  - lib/github/nippou/format.rb
184
+ - lib/github/nippou/init.rb
170
185
  - lib/github/nippou/settings.rb
171
186
  - lib/github/nippou/user_events.rb
172
187
  - lib/github/nippou/version.rb
173
188
  - spec/fixtures/settings-invalid.yml
174
189
  - spec/fixtures/settings-valid.yml
190
+ - spec/github/nippou/init_spec.rb
175
191
  - spec/github/nippou/settings_spec.rb
176
192
  - spec/spec_helper.rb
193
+ - spec/support/interface_init.rb
194
+ - spec/support/interface_settings.rb
177
195
  - spec/support/load_fixture.rb
178
196
  homepage: https://github.com/masutaka/github-nippou
179
197
  licenses:
@@ -202,6 +220,9 @@ summary: Print today's your GitHub action.
202
220
  test_files:
203
221
  - spec/fixtures/settings-invalid.yml
204
222
  - spec/fixtures/settings-valid.yml
223
+ - spec/github/nippou/init_spec.rb
205
224
  - spec/github/nippou/settings_spec.rb
206
225
  - spec/spec_helper.rb
226
+ - spec/support/interface_init.rb
227
+ - spec/support/interface_settings.rb
207
228
  - spec/support/load_fixture.rb