stand 1.0.0 → 1.0.1

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: c3d925919e0fa006dc5a25a66aa92e13b6a443eb
4
- data.tar.gz: 1984816b62b4846394d81e51698ee6ba2cf13824
3
+ metadata.gz: 76fed7b4155b7cc0affefd311d7ae03e2f87c2fd
4
+ data.tar.gz: 8baac876f06b2ca659d44d8c9ecb21510e6f624d
5
5
  SHA512:
6
- metadata.gz: cb91ea09297500d78c6cc1c200821b9c18a53ccee589480b2949ab86d7cd5404276baf4ebe8735525ba67b78125ffcded6150612565ca6ac6d6f8a075a5e85e7
7
- data.tar.gz: 13aed307b32ae29a508bafea94009c43805fa9408f7d2034029579902e185dac18ab791619fc0b73e66bf34b10ecb91be7c302152f32d6f928042e2742e6e645
6
+ metadata.gz: e43e732b7d57f6db23dd44f43fa85ba4c776ee0313fa56cc04f569b2921aaac0d2a81d70326becb7af7f95d8da9eacde43e83ad47f792680e399bde0ae035cc9
7
+ data.tar.gz: e801ca86fbf75e0b38a244b4e904c06ffd6d5594600711fdc3d0982b79c40fe16c3ddd7acabcb8df5529fa22a0733a5defa3e14fba87dc2d1dfe8d801a8ac822
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
- standup.yml
2
1
  *.gem
2
+ Gemfile.lock
3
+ standup.yml
data/README.md CHANGED
@@ -1,42 +1,58 @@
1
1
  # Standup
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/stand.svg)](https://badge.fury.io/rb/stand)
4
+
3
5
  This gem is a simple binary to help you generate reports of your work.
4
6
 
5
- # Installation
7
+ ## Installation
6
8
 
7
9
  - Install with `gem install stand`
8
10
  - Generate a new token on https://gitlab.example.net/profile/personal_access_tokens with the "api" scope
9
11
  - Create the file `$HOME/.standup/standup.yml` with the following content:
10
12
 
11
- ~~~ruby
13
+ ```yaml
12
14
  gitlab_access_token: 'AbCdEfGhIjKlMnOp'
13
15
  gitlab_endpoint: 'https://gitlab.example.net/api/v3'
14
- ~~~
15
-
16
+ ```
16
17
 
17
- # Usage
18
+ ## Usage
18
19
 
19
20
  And you are good to go via
20
21
 
21
- > standup --username <gitlab_username>
22
- ----- DONE -----
23
- A Merge Request title 1 (project_name1)
24
- A Merge request title 2 (project_name2)
25
- ----------------
26
-
27
- --- REVIEWED ---
28
- A reviewed merge request title 1 (project_name2)
29
- ----------------
22
+ ```bash
23
+ ~$ standup --username <gitlab_username>
24
+ +------------+-------+-----+------------------------------------------------+
25
+ | DONE |
26
+ +------------+-------+-----+------------------------------------------------+
27
+ | PROJECT | TYPE | ID | TITLE |
28
+ +------------+-------+-----+------------------------------------------------+
29
+ | myproject | MR | #1 | I broke everything |
30
+ | myproject | MR | #2 | This should fix it |
31
+ | myproject | MR | #3 | Getting there |
32
+ | myproject | ISSUE | #1 | Super feature |
33
+ | myproject | ISSUE | #2 | Great feature |
34
+ +------------+-------+-----+------------------------------------------------+
35
+
36
+ +------------+-------+-----+------------------------------------------------+
37
+ | REVIEWED |
38
+ +------------+-------+-----+------------------------------------------------+
39
+ | PROJECT | TYPE | ID | TITLE |
40
+ +------------+-------+-----+------------------------------------------------+
41
+ | myproject | MR | #4 | Not there yet |
42
+ | myproject | MR | #5 | All set ! |
43
+ +------------+-------+-----+------------------------------------------------+
44
+ ```
30
45
 
31
46
  Forgot a standup two days ago? Just
32
47
 
33
- standup --from 2017-02-01 --to 2017-02-02 --username <gitlab_username>
34
-
48
+ ```bash
49
+ ~$ standup --from 2017-02-01 --to 2017-02-02 --username <gitlab_username>
50
+ ```
35
51
 
36
- # Integrations
52
+ ## Integrations
37
53
 
38
- For now, only Gitlab's API.
54
+ For now, Gitlab's API only.
39
55
 
40
- # License
56
+ ## License
41
57
 
42
58
  MIT Licensed © Capitaine Train SAS
data/lib/standup/app.rb CHANGED
@@ -7,14 +7,13 @@ module Standup
7
7
  class App
8
8
  include EasyAppHelper
9
9
 
10
- VERSION = '0.0.1'
11
10
  NAME = 'Auto Standup'
12
11
  DESCRIPTION = 'Fetchs data from gitlab to report what you have done'
13
12
 
14
13
  def initialize
15
14
  config.config_file_base_name = 'standup'
16
15
  config.describes_application app_name: NAME,
17
- app_version: VERSION,
16
+ app_version: Standup::VERSION,
18
17
  app_description: DESCRIPTION
19
18
  add_script_options
20
19
  end
@@ -1,20 +1,19 @@
1
1
  require 'gitlab'
2
+ require 'terminal-table'
2
3
 
3
4
  module Standup
4
5
  class ReportGenerator
5
6
  def initialize(settings)
6
7
  @settings = settings
8
+ @result = {
9
+ 'done' => [],
10
+ 'reviewed' => [],
11
+ }
7
12
 
8
13
  configure_gitlab_client
9
14
  end
10
15
 
11
16
  def gitlab_report!
12
- done = []
13
- reviewed = []
14
- config = @settings.config
15
- to_date = @settings.to_date
16
- from_date = @settings.from_date
17
-
18
17
  projects_query = {
19
18
  per_page: 10,
20
19
  scope: :owned,
@@ -30,6 +29,13 @@ module Standup
30
29
  sort: :desc
31
30
  }
32
31
 
32
+ issues_query = {
33
+ per_page: 100,
34
+ state: :closed,
35
+ order_by: :updated_at,
36
+ sort: :desc
37
+ }
38
+
33
39
  projects = Gitlab.projects(projects_query)
34
40
 
35
41
  projects.each do |project|
@@ -40,40 +46,61 @@ module Standup
40
46
  merged_mrs = []
41
47
  end
42
48
 
49
+ begin
50
+ closed_issues = Gitlab.issues(project.id, issues_query)
51
+ rescue Gitlab::Error::Forbidden
52
+ closed_issues = []
53
+ end
54
+
43
55
  merged_mrs.each do |mr|
44
- updated_at = Time.parse(mr.updated_at)
45
- author = mr.author.username
46
- assignee = mr.assignee && mr.assignee.username
47
-
48
- if updated_at < to_date &&
49
- updated_at > from_date
50
-
51
- if author == config[:username]
52
- done << "#{mr.title} (#{project.name})"
53
- elsif assignee == config[:username]
54
- reviewed << "#{mr.title} (#{project.name})"
55
- end
56
- end
56
+ validate_state(project, mr, 'MR')
57
+ end
58
+
59
+ closed_issues.each do |issue|
60
+ validate_state(project, issue, 'ISSUE')
57
61
  end
58
62
  end
59
63
 
60
- puts '----- DONE -----'
61
- puts done
62
- puts "----------------\n\n"
64
+ puts Terminal::Table.new :title => 'DONE', :headings => [ 'PROJECT', 'TYPE', 'ID', 'TITLE' ], :rows => @result['done']
65
+ puts "\n"
66
+ puts Terminal::Table.new :title => 'REVIEWED', :headings => [ 'PROJECT', 'TYPE', 'ID', 'TITLE' ], :rows => @result['reviewed']
63
67
 
64
- puts '--- REVIEWED ---'
65
- puts reviewed
66
- puts "----------------\n\n"
67
68
  end
68
69
 
69
70
  private
70
71
 
72
+ def config
73
+ @settings.config
74
+ end
75
+
76
+ def to_date
77
+ @settings.to_date
78
+ end
79
+
80
+ def from_date
81
+ @settings.from_date
82
+ end
83
+
84
+ def validate_state(project, event, type='?')
85
+ updated_at = Time.parse(event.updated_at)
86
+ author = event.author.username
87
+ assignee = event.assignee && event.assignee.username
88
+
89
+ if updated_at < to_date && updated_at > from_date
90
+ if author == config[:username]
91
+ @result['done'] << [project.name, type, "##{event.iid}", event.title]
92
+ elsif assignee == config[:username]
93
+ @result['reviewed'] << [project.name, type, "##{event.iid}", event.title]
94
+ end
95
+ end
96
+ end
97
+
71
98
  def configure_gitlab_client
72
- api_endpoint = @settings.config['gitlab_endpoint'] || 'https://gitlab.com/api/v3'.freeze
99
+ api_endpoint = config['gitlab_endpoint'] || 'https://gitlab.com/api/v3'.freeze
73
100
 
74
101
  Gitlab.configure do |c|
75
102
  c.endpoint = api_endpoint
76
- c.private_token = @settings.config['gitlab_access_token']
103
+ c.private_token = config['gitlab_access_token']
77
104
  end
78
105
  end
79
106
  end
@@ -1,3 +1,3 @@
1
1
  module Standup
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
data/stand.gemspec CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.licenses = ['MIT']
7
7
  s.version = Standup::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
- s.authors = ['Paul Bonaud', 'Théophile Helleboid']
9
+ s.authors = ['Paul Bonaud', 'Théophile Helleboid', 'Maxime Visonneau']
10
10
  s.email = ['paul.bonaud@trainline.com']
11
11
  s.homepage = 'https://rubygems.org/gems/stand'
12
12
  s.summary = %q(Generate your standup reports instantly.)
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.add_dependency 'easy_app_helper'
23
23
  s.add_dependency 'activesupport'
24
24
  s.add_dependency 'gitlab'
25
+ s.add_dependency 'terminal-table'
25
26
 
26
27
  s.add_development_dependency 'pry'
27
28
  s.add_development_dependency 'guard'
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stand
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Bonaud
8
8
  - Théophile Helleboid
9
+ - Maxime Visonneau
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2017-05-01 00:00:00.000000000 Z
13
+ date: 2017-05-19 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: easy_app_helper
@@ -53,6 +54,20 @@ dependencies:
53
54
  - - ">="
54
55
  - !ruby/object:Gem::Version
55
56
  version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: terminal-table
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
56
71
  - !ruby/object:Gem::Dependency
57
72
  name: pry
58
73
  requirement: !ruby/object:Gem::Requirement
@@ -273,7 +288,6 @@ extra_rdoc_files: []
273
288
  files:
274
289
  - ".gitignore"
275
290
  - Gemfile
276
- - Gemfile.lock
277
291
  - LICENSE
278
292
  - README.md
279
293
  - bin/standup
data/Gemfile.lock DELETED
@@ -1,168 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- standup (0.0.1)
5
- activesupport
6
- easy_app_helper
7
- gitlab
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- activesupport (5.0.1)
13
- concurrent-ruby (~> 1.0, >= 1.0.2)
14
- i18n (~> 0.7)
15
- minitest (~> 5.1)
16
- tzinfo (~> 1.1)
17
- addressable (2.5.0)
18
- public_suffix (~> 2.0, >= 2.0.2)
19
- ast (2.3.0)
20
- builder (3.2.3)
21
- ci_reporter (2.0.0)
22
- builder (>= 2.1.2)
23
- ci_reporter_rspec (1.0.0)
24
- ci_reporter (~> 2.0)
25
- rspec (>= 2.14, < 4)
26
- coderay (1.1.1)
27
- concurrent-ruby (1.0.4)
28
- crack (0.4.3)
29
- safe_yaml (~> 1.0.0)
30
- deep_merge (1.1.1)
31
- diff-lcs (1.3)
32
- docile (1.1.5)
33
- easy_app_helper (4.2.3)
34
- activesupport
35
- stacked_config (~> 2.0.0)
36
- ffi (1.9.17)
37
- formatador (0.2.5)
38
- gitlab (3.7.0)
39
- httparty (~> 0.13.0)
40
- terminal-table
41
- guard (2.14.1)
42
- formatador (>= 0.2.4)
43
- listen (>= 2.7, < 4.0)
44
- lumberjack (~> 1.0)
45
- nenv (~> 0.1)
46
- notiffany (~> 0.0)
47
- pry (>= 0.9.12)
48
- shellany (~> 0.0)
49
- thor (>= 0.18.1)
50
- guard-compat (1.2.1)
51
- guard-rspec (4.7.3)
52
- guard (~> 2.1)
53
- guard-compat (~> 1.1)
54
- rspec (>= 2.99.0, < 4.0)
55
- guard-rubocop (1.2.0)
56
- guard (~> 2.0)
57
- rubocop (~> 0.20)
58
- hashdiff (0.3.2)
59
- httparty (0.13.7)
60
- json (~> 1.8)
61
- multi_xml (>= 0.5.2)
62
- i18n (0.8.0)
63
- json (1.8.6)
64
- listen (3.1.5)
65
- rb-fsevent (~> 0.9, >= 0.9.4)
66
- rb-inotify (~> 0.9, >= 0.9.7)
67
- ruby_dep (~> 1.2)
68
- lumberjack (1.0.11)
69
- method_source (0.8.2)
70
- minitest (5.10.1)
71
- multi_xml (0.6.0)
72
- nenv (0.3.0)
73
- notiffany (0.1.1)
74
- nenv (~> 0.1)
75
- shellany (~> 0.0)
76
- parser (2.4.0.0)
77
- ast (~> 2.2)
78
- powerpack (0.1.1)
79
- pry (0.10.4)
80
- coderay (~> 1.1.0)
81
- method_source (~> 0.8.1)
82
- slop (~> 3.4)
83
- psych (2.0.8)
84
- public_suffix (2.0.5)
85
- rack (2.0.1)
86
- rack-test (0.6.3)
87
- rack (>= 1.0)
88
- rainbow (2.2.1)
89
- rake (12.0.0)
90
- rb-fsevent (0.9.8)
91
- rb-inotify (0.9.8)
92
- ffi (>= 0.5.0)
93
- rspec (3.5.0)
94
- rspec-core (~> 3.5.0)
95
- rspec-expectations (~> 3.5.0)
96
- rspec-mocks (~> 3.5.0)
97
- rspec-core (3.5.4)
98
- rspec-support (~> 3.5.0)
99
- rspec-expectations (3.5.0)
100
- diff-lcs (>= 1.2.0, < 2.0)
101
- rspec-support (~> 3.5.0)
102
- rspec-its (1.2.0)
103
- rspec-core (>= 3.0.0)
104
- rspec-expectations (>= 3.0.0)
105
- rspec-mocks (3.5.0)
106
- diff-lcs (>= 1.2.0, < 2.0)
107
- rspec-support (~> 3.5.0)
108
- rspec-support (3.5.0)
109
- rubocop (0.47.1)
110
- parser (>= 2.3.3.1, < 3.0)
111
- powerpack (~> 0.1)
112
- rainbow (>= 1.99.1, < 3.0)
113
- ruby-progressbar (~> 1.7)
114
- unicode-display_width (~> 1.0, >= 1.0.1)
115
- ruby-progressbar (1.8.1)
116
- ruby_dep (1.5.0)
117
- safe_yaml (1.0.4)
118
- shellany (0.0.1)
119
- simplecov (0.13.0)
120
- docile (~> 1.1.0)
121
- json (>= 1.8, < 3)
122
- simplecov-html (~> 0.10.0)
123
- simplecov-html (0.10.0)
124
- simplecov-rcov (0.2.3)
125
- simplecov (>= 0.4.1)
126
- slop (3.6.0)
127
- stacked_config (2.0.1)
128
- slop (~> 3.0)
129
- super_stack (~> 1.0)
130
- super_stack (1.0.2)
131
- deep_merge
132
- psych (= 2.0.8)
133
- terminal-table (1.7.3)
134
- unicode-display_width (~> 1.1.1)
135
- thor (0.19.4)
136
- thread_safe (0.3.5)
137
- timecop (0.8.1)
138
- tzinfo (1.2.2)
139
- thread_safe (~> 0.1)
140
- unicode-display_width (1.1.3)
141
- webmock (2.3.2)
142
- addressable (>= 2.3.6)
143
- crack (>= 0.3.2)
144
- hashdiff
145
-
146
- PLATFORMS
147
- ruby
148
-
149
- DEPENDENCIES
150
- ci_reporter
151
- ci_reporter_rspec
152
- guard
153
- guard-rspec
154
- guard-rubocop
155
- pry
156
- rack-test
157
- rake
158
- rspec
159
- rspec-its
160
- rubocop
161
- simplecov
162
- simplecov-rcov
163
- standup!
164
- timecop
165
- webmock
166
-
167
- BUNDLED WITH
168
- 1.13.7