github-nippou 1.0.2 → 1.1.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
  SHA1:
3
- metadata.gz: f0f8444807461575c3b84608f70b188bafbd4af4
4
- data.tar.gz: b3690ae74f197ff76922aa7e34a7aca0293aab29
3
+ metadata.gz: 768b205b4d75ddf857b9b1006ec95cc909169333
4
+ data.tar.gz: b9ea743c90af5b63a70ad2607995266496f23f81
5
5
  SHA512:
6
- metadata.gz: 7bc0194bc43367138171f0d51c614a53eaf9416f15f9d062fd61e732317f907ad81f273874adff878916f39a2e7e1d7e8556c1afef16aca1c8127d9f1fb08227
7
- data.tar.gz: 07501c4a023aca64c3af0fdf05fcedfb68747fd78a9981d89956a6af59d31e49e4fed28a64ce40f91e6a3e2687fa9073b7eb43d1bb8f634b47cd288d29afcc71
6
+ metadata.gz: b31655b73e7a38155244cee3a7d23acbe19d3c882b7a63f118e1198536f495935bababb36dc8463397cddc9c10a039114009aa276ae601bef246dd60f468b4cc
7
+ data.tar.gz: 07c885f154e58c58a68b651e3215956fb49ac7188d68fb8ce2dd012ccfdf7a9733f9a8a551bb804bb36341d79951b7ce7a23c3b3ee8921cf5d9e61ed3d1942f0
@@ -1,30 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- github-nippou (1.0.2)
5
- octokit (~> 3.7)
4
+ github-nippou (1.1.0)
5
+ octokit
6
+ thor
6
7
 
7
8
  GEM
8
9
  remote: https://rubygems.org/
9
10
  specs:
10
- addressable (2.3.8)
11
+ addressable (2.4.0)
11
12
  faraday (0.9.2)
12
13
  multipart-post (>= 1.2, < 3)
13
14
  multipart-post (2.0.0)
14
- octokit (3.8.0)
15
- sawyer (~> 0.6.0, >= 0.5.3)
16
- rake (10.4.2)
17
- sawyer (0.6.0)
18
- addressable (~> 2.3.5)
15
+ octokit (4.3.0)
16
+ sawyer (~> 0.7.0, >= 0.5.3)
17
+ rake (11.1.1)
18
+ sawyer (0.7.0)
19
+ addressable (>= 2.3.5, < 2.5)
19
20
  faraday (~> 0.8, < 0.10)
21
+ thor (0.19.1)
20
22
 
21
23
  PLATFORMS
22
24
  ruby
23
25
 
24
26
  DEPENDENCIES
25
- bundler (~> 1.7)
27
+ bundler
26
28
  github-nippou!
27
- rake (~> 10.0)
29
+ rake
28
30
 
29
31
  BUNDLED WITH
30
- 1.10.6
32
+ 1.11.2
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # Github::Nippou [![Gem Version][gem-badge]][gem-link]
2
2
 
3
- Print today's your GitHub action.
3
+ Displays today's your GitHub action.
4
4
 
5
5
  This is a helpful tool when you write a daily report in reference to
6
- GitHub. nippou is a japanese word which means a daily report.
6
+ GitHub. Nippou is a japanese word which means a daily report.
7
7
 
8
8
  ## Installation
9
9
 
@@ -28,7 +28,17 @@ Or install it yourself as:
28
28
 
29
29
  ## Usage
30
30
 
31
- $ github-nippou
31
+ ```
32
+ $ github-nippou help
33
+ Commands:
34
+ github-nippou help [COMMAND] # Describe available commands or one specific command
35
+ github-nippou list # Displays today's GitHub events formatted for Nippou
36
+
37
+ Options:
38
+ a, [--all], [--no-all] # Displays all events that can retrieve from GitHub
39
+ ```
40
+
41
+ You can omit the sub command `list`.
32
42
 
33
43
  ## Contributing
34
44
 
@@ -2,4 +2,4 @@
2
2
 
3
3
  require 'github/nippou'
4
4
 
5
- Github::Nippou.list
5
+ Github::Nippou::Commands.start
@@ -1,4 +1,3 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'github/nippou/version'
@@ -21,8 +20,9 @@ Gem::Specification.new do |spec|
21
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
21
  spec.require_paths = ['lib']
23
22
 
24
- spec.add_dependency 'octokit', '~> 3.7'
23
+ spec.add_dependency 'octokit'
24
+ spec.add_dependency 'thor'
25
25
 
26
- spec.add_development_dependency 'bundler', '~> 1.7'
27
- spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'bundler'
27
+ spec.add_development_dependency 'rake'
28
28
  end
@@ -1,74 +1,2 @@
1
+ require 'github/nippou/commands'
1
2
  require 'github/nippou/version'
2
- require 'octokit'
3
-
4
- module Github
5
- module Nippou
6
- def self.list
7
- user = self.user
8
- client = Octokit::Client.new(login: user, access_token: self.access_token)
9
- events = client.user_events(user)
10
-
11
- url_to_detail = {}
12
-
13
- events.each do |_|
14
- break unless _.created_at.getlocal.to_date == Time.now.to_date
15
- case _.type
16
- when 'IssuesEvent', 'IssueCommentEvent'
17
- title = _.payload.issue.title.gsub('`', '\\\`')
18
- merged = client.pull_merged?(_.repo.name, _.payload.issue.number)
19
- url_to_detail[_.payload.issue.html_url] ||= {title: title, repo_basename: _.repo.name, username: _.payload.issue.user.login, merged: merged}
20
- when 'PullRequestEvent', 'PullRequestReviewCommentEvent'
21
- title = _.payload.pull_request.title.gsub('`', '\\\`')
22
- merged = client.pull_merged?(_.repo.name, _.payload.pull_request.number)
23
- url_to_detail[_.payload.pull_request.html_url] ||= {title: title, repo_basename: _.repo.name, username: _.payload.pull_request.user.login, merged: merged}
24
- end
25
- end
26
-
27
- url_to_detail.each do |url, detail|
28
- line = "* [#{detail[:title]} - #{detail[:repo_basename]}](#{url}) by #{detail[:username]}"
29
- line << ' **merged!**' if detail[:merged]
30
- puts line
31
- end
32
- end
33
-
34
- private
35
-
36
- def self.user
37
- case
38
- when ENV['GITHUB_NIPPOU_USER']
39
- ENV['GITHUB_NIPPOU_USER']
40
- when !`git config github-nippou.user`.chomp.empty?
41
- `git config github-nippou.user`.chomp
42
- else
43
- puts <<MESSAGE
44
- ** User required.
45
-
46
- Please set github-nippou.user to your .gitconfig.
47
- $ git config --global github-nippou.user [Your GitHub account]
48
- MESSAGE
49
- exit!
50
- end
51
- end
52
-
53
- def self.access_token
54
- case
55
- when ENV['GITHUB_NIPPOU_ACCESS_TOKEN']
56
- ENV['GITHUB_NIPPOU_ACCESS_TOKEN']
57
- when !`git config github-nippou.token`.chomp.empty?
58
- `git config github-nippou.token`.chomp
59
- else
60
- puts <<MESSAGE
61
- ** Authorization required.
62
-
63
- Please set github-nippou.token to your .gitconfig.
64
- $ git config --global github-nippou.token [Your GitHub access token]
65
-
66
- To get new token, visit
67
- https://github.com/settings/tokens/new
68
-
69
- MESSAGE
70
- exit!
71
- end
72
- end
73
- end
74
- end
@@ -0,0 +1,115 @@
1
+ require 'octokit'
2
+ require 'thor'
3
+
4
+ module StringExMarkdown
5
+ refine String do
6
+ def markdown_escape
7
+ self.gsub(/([`<>])/, '\\\\\1')
8
+ end
9
+ end
10
+ end
11
+
12
+ module Github
13
+ module Nippou
14
+ class Commands < Thor
15
+ using StringExMarkdown
16
+
17
+ default_task :list
18
+ class_option :all, type: :boolean, aliases: :a, desc: 'Displays all events that can retrieve from GitHub'
19
+
20
+ desc 'list', "Displays today's GitHub events formatted for Nippou"
21
+ def list
22
+ nippous.each do |url, detail|
23
+ line = "* [#{detail[:title]} - #{detail[:repo_basename]}](#{url}) by #{detail[:username]}"
24
+ line << ' **merged!**' if detail[:merged]
25
+ puts line
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def nippous
32
+ result = {}
33
+ now = Time.now
34
+
35
+ client.user_events(user).each do |event|
36
+ break if skip?(event, now)
37
+
38
+ case event.type
39
+ when 'IssuesEvent', 'IssueCommentEvent'
40
+ issue = event.payload.issue
41
+ result[issue.html_url] ||= hash_for_issue(event.repo, issue)
42
+ when 'PullRequestEvent', 'PullRequestReviewCommentEvent'
43
+ pr = event.payload.pull_request
44
+ result[pr.html_url] ||= hash_for_pr(event.repo, pr)
45
+ end
46
+ end
47
+
48
+ result
49
+ end
50
+
51
+ def skip?(event, now)
52
+ if options[:all]
53
+ false
54
+ else
55
+ event.created_at.getlocal.to_date != now.to_date
56
+ end
57
+ end
58
+
59
+ def client
60
+ @client ||= Octokit::Client.new(login: user, access_token: access_token)
61
+ end
62
+
63
+ def user
64
+ @user ||=
65
+ case
66
+ when ENV['GITHUB_NIPPOU_USER']
67
+ ENV['GITHUB_NIPPOU_USER']
68
+ when !`git config github-nippou.user`.chomp.empty?
69
+ `git config github-nippou.user`.chomp
70
+ else
71
+ puts <<MESSAGE
72
+ ** User required.
73
+
74
+ Please set github-nippou.user to your .gitconfig.
75
+ $ git config --global github-nippou.user [Your GitHub account]
76
+ MESSAGE
77
+ exit!
78
+ end
79
+ end
80
+
81
+ def access_token
82
+ @access_token ||=
83
+ case
84
+ when ENV['GITHUB_NIPPOU_ACCESS_TOKEN']
85
+ ENV['GITHUB_NIPPOU_ACCESS_TOKEN']
86
+ when !`git config github-nippou.token`.chomp.empty?
87
+ `git config github-nippou.token`.chomp
88
+ else
89
+ puts <<MESSAGE
90
+ ** Authorization required.
91
+
92
+ Please set github-nippou.token to your .gitconfig.
93
+ $ git config --global github-nippou.token [Your GitHub access token]
94
+
95
+ To get new token, visit
96
+ https://github.com/settings/tokens/new
97
+ MESSAGE
98
+ exit!
99
+ end
100
+ end
101
+
102
+ def hash_for_issue(repo, issue)
103
+ title = issue.title.markdown_escape
104
+ merged = client.pull_merged?(repo.name, issue.number)
105
+ {title: title, repo_basename: repo.name, username: issue.user.login, merged: merged}
106
+ end
107
+
108
+ def hash_for_pr(repo, pr)
109
+ title = pr.title.markdown_escape
110
+ merged = client.pull_merged?(repo.name, pr.number)
111
+ {title: title, repo_basename: repo.name, username: pr.user.login, merged: merged}
112
+ end
113
+ end
114
+ end
115
+ end
@@ -1,5 +1,5 @@
1
1
  module Github
2
2
  module Nippou
3
- VERSION = '1.0.2'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,57 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: github-nippou
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.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: 2015-10-10 00:00:00.000000000 Z
11
+ date: 2016-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: octokit
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.7'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.7'
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - "~>"
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '1.7'
47
+ version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - "~>"
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '1.7'
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '10.0'
61
+ version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - "~>"
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '10.0'
68
+ version: '0'
55
69
  description: |2
56
70
  This is a helpful tool when you write a daily report in reference to
57
71
  GitHub. nippou is a japanese word which means a daily report.
@@ -71,6 +85,7 @@ files:
71
85
  - bin/github-nippou
72
86
  - github-nippou.gemspec
73
87
  - lib/github/nippou.rb
88
+ - lib/github/nippou/commands.rb
74
89
  - lib/github/nippou/version.rb
75
90
  homepage: https://github.com/masutaka/github-nippou
76
91
  licenses:
@@ -92,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
107
  version: '0'
93
108
  requirements: []
94
109
  rubyforge_project:
95
- rubygems_version: 2.4.5.1
110
+ rubygems_version: 2.5.1
96
111
  signing_key:
97
112
  specification_version: 4
98
113
  summary: Print today's your GitHub action.