stand 1.0.5.pre → 1.0.5.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/standup.rb +5 -0
- data/lib/standup/app.rb +4 -3
- data/lib/standup/cache.rb +17 -0
- data/lib/standup/config_parser.rb +1 -2
- data/lib/standup/report_generator.rb +40 -16
- data/lib/standup/version.rb +1 -1
- data/stand.gemspec +1 -0
- metadata +16 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 918e4803f3d7d64990882e29154023325df9f2fe
|
4
|
+
data.tar.gz: f9707445e4e0f4b8ea7f03a2416b0506d8be4aee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6ab15680612878db88f41a02bf5fc3f516cc93a26bf726356ffeb4723be9139a42103536d428331f7abf6be87cdbe17af84efbc65aa0d4e8d9dbbfcca3e94c5
|
7
|
+
data.tar.gz: a60e52c06f6ecf24ced9c4f05690e1fad6fa41bc30a61755b2cf64d1d1ce6a4212108f3da6ee8ad5e9c55bc11f23f4adc721f68858b2fcab22eb409588ee3624
|
data/lib/standup.rb
CHANGED
@@ -2,5 +2,10 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
2
2
|
require 'active_support/core_ext/time'
|
3
3
|
require 'active_support/core_ext/numeric/time'
|
4
4
|
|
5
|
+
module Standup
|
6
|
+
BASE_NAME = 'standup'.freeze
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'standup/cache'
|
5
10
|
require 'standup/version'
|
6
11
|
require 'standup/app'
|
data/lib/standup/app.rb
CHANGED
@@ -11,7 +11,7 @@ module Standup
|
|
11
11
|
DESCRIPTION = 'Fetchs data from gitlab to report what you have done'
|
12
12
|
|
13
13
|
def initialize
|
14
|
-
config.config_file_base_name =
|
14
|
+
config.config_file_base_name = Standup::BASE_NAME
|
15
15
|
config.describes_application app_name: NAME,
|
16
16
|
app_version: Standup::VERSION,
|
17
17
|
app_description: DESCRIPTION
|
@@ -22,14 +22,15 @@ module Standup
|
|
22
22
|
config.add_command_line_section('Application Options') do |s|
|
23
23
|
s.on :from, 'From specific day', argument: true
|
24
24
|
s.on :to, 'To specific day', argument: true
|
25
|
-
s.on :username, 'Username', argument: true
|
26
25
|
end
|
27
26
|
end
|
28
27
|
|
29
28
|
def run
|
30
29
|
settings = ConfigParser.new(config)
|
31
30
|
|
32
|
-
|
31
|
+
Standup::Cache.use_cassette("gitlab", re_record_interval: (settings.to_date - settings.from_date) / 10) do
|
32
|
+
ReportGenerator.new(settings).gitlab_report!
|
33
|
+
end
|
33
34
|
end
|
34
35
|
end
|
35
36
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'vcr'
|
2
|
+
|
3
|
+
module Standup
|
4
|
+
Cache = VCR
|
5
|
+
end
|
6
|
+
|
7
|
+
Standup::Cache.configure do |c|
|
8
|
+
c.cassette_library_dir = "#{File.expand_path('~')}/.#{Standup::BASE_NAME}/cache"
|
9
|
+
c.hook_into :webmock
|
10
|
+
c.default_cassette_options = {
|
11
|
+
re_record_interval: 1.day,
|
12
|
+
record: :new_episodes
|
13
|
+
}
|
14
|
+
c.ignore_request do |request|
|
15
|
+
request.method != :get
|
16
|
+
end
|
17
|
+
end
|
@@ -17,8 +17,7 @@ module Standup
|
|
17
17
|
private
|
18
18
|
|
19
19
|
def validate_config!
|
20
|
-
fail
|
21
|
-
fail 'Please provide a Gitlab access token in your configuration file' unless config['gitlab_access_token']
|
20
|
+
fail "Please provide a Gitlab access token in your configuration file 'gitlab_access_token missing'" unless config['gitlab_access_token']
|
22
21
|
end
|
23
22
|
|
24
23
|
def help_needed?
|
@@ -14,57 +14,81 @@ module Standup
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def gitlab_report!
|
17
|
+
# Get authenticated user
|
18
|
+
config[:username] = Gitlab.user.username
|
19
|
+
|
17
20
|
projects_query = {
|
18
|
-
per_page:
|
21
|
+
per_page: 20,
|
19
22
|
membership: true,
|
20
23
|
search: config['gitlab_project_search_pattern'],
|
21
24
|
order_by: :last_activity_at,
|
22
25
|
sort: :desc
|
23
26
|
}
|
24
27
|
|
25
|
-
|
28
|
+
created_mrs_query = {
|
26
29
|
per_page: 100,
|
27
30
|
state: :merged,
|
28
31
|
order_by: :updated_at,
|
29
|
-
sort: :desc
|
32
|
+
sort: :desc,
|
33
|
+
scope: 'created-by-me'
|
30
34
|
}
|
35
|
+
assigned_mrs_query = created_mrs_query.dup
|
36
|
+
assigned_mrs_query[:scope] = 'assigned-to-me'
|
31
37
|
|
32
|
-
|
38
|
+
assigned_issues_query = {
|
33
39
|
per_page: 100,
|
34
40
|
state: :closed,
|
35
41
|
order_by: :updated_at,
|
36
|
-
sort: :desc
|
42
|
+
sort: :desc,
|
43
|
+
scope: 'assigned-to-me'
|
37
44
|
}
|
38
45
|
|
39
46
|
projects = Gitlab.projects(projects_query)
|
40
47
|
|
41
48
|
projects.each do |project|
|
49
|
+
merged_mrs = []
|
50
|
+
closed_issues = []
|
51
|
+
|
52
|
+
if config[:verbose]
|
53
|
+
puts "Scanning project #{project.namespace.name}/#{project.name} (#{project.id})"
|
54
|
+
end
|
55
|
+
|
42
56
|
begin
|
43
|
-
|
44
|
-
|
57
|
+
Gitlab.merge_requests(project.id, created_mrs_query).auto_paginate do |mr|
|
58
|
+
merged_mrs << mr
|
59
|
+
end
|
60
|
+
Gitlab.merge_requests(project.id, assigned_mrs_query).auto_paginate do |mr|
|
61
|
+
merged_mrs << mr
|
62
|
+
end
|
63
|
+
rescue Gitlab::Error::Forbidden => e
|
45
64
|
# Don't seem to have acces to some MRs
|
46
|
-
|
65
|
+
if config[:verbose]
|
66
|
+
puts "Error while fetching merge requests from project #{project.name} (#{project.id}): #{e.inspect}"
|
67
|
+
end
|
47
68
|
end
|
48
69
|
|
49
70
|
begin
|
50
|
-
|
51
|
-
|
52
|
-
|
71
|
+
Gitlab.issues(project.id, assigned_issues_query).auto_paginate do |issue|
|
72
|
+
closed_issues << issue
|
73
|
+
end
|
74
|
+
rescue Gitlab::Error::Forbidden => e
|
75
|
+
if @settings.config[:verbose]
|
76
|
+
puts "Error while fetching issues from project #{project.name} (#{project.id}): #{e.inspect}"
|
77
|
+
end
|
53
78
|
end
|
54
79
|
|
55
80
|
merged_mrs.each do |mr|
|
56
|
-
|
81
|
+
validate_result!(project, mr, 'MR')
|
57
82
|
end
|
58
83
|
|
59
84
|
closed_issues.each do |issue|
|
60
|
-
|
85
|
+
validate_result!(project, issue, 'ISSUE')
|
61
86
|
end
|
62
87
|
end
|
63
88
|
|
64
89
|
puts Terminal::Table.new :title => 'DONE', :headings => [ 'PROJECT', 'TYPE', 'ID', 'TITLE' ], :rows => @result['done']
|
65
90
|
puts "\n"
|
66
91
|
puts Terminal::Table.new :title => 'REVIEWED', :headings => [ 'PROJECT', 'TYPE', 'ID', 'TITLE' ], :rows => @result['reviewed']
|
67
|
-
|
68
92
|
end
|
69
93
|
|
70
94
|
private
|
@@ -81,7 +105,7 @@ module Standup
|
|
81
105
|
@settings.from_date
|
82
106
|
end
|
83
107
|
|
84
|
-
def
|
108
|
+
def validate_result!(project, event, type='?')
|
85
109
|
updated_at = Time.parse(event.updated_at)
|
86
110
|
author = event.author.username
|
87
111
|
assignee = event.assignee && event.assignee.username
|
@@ -96,7 +120,7 @@ module Standup
|
|
96
120
|
end
|
97
121
|
|
98
122
|
def configure_gitlab_client
|
99
|
-
api_endpoint = config['gitlab_endpoint'] || 'https://gitlab.com/api/
|
123
|
+
api_endpoint = config['gitlab_endpoint'] || 'https://gitlab.com/api/v4'.freeze
|
100
124
|
|
101
125
|
Gitlab.configure do |c|
|
102
126
|
c.endpoint = api_endpoint
|
data/lib/standup/version.rb
CHANGED
data/stand.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stand
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.5.
|
4
|
+
version: 1.0.5.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Bonaud
|
@@ -68,6 +68,20 @@ dependencies:
|
|
68
68
|
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
70
|
version: '0'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: vcr
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '3.0'
|
78
|
+
type: :runtime
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '3.0'
|
71
85
|
- !ruby/object:Gem::Dependency
|
72
86
|
name: pry
|
73
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -294,6 +308,7 @@ files:
|
|
294
308
|
- bin/standup
|
295
309
|
- lib/standup.rb
|
296
310
|
- lib/standup/app.rb
|
311
|
+
- lib/standup/cache.rb
|
297
312
|
- lib/standup/config_parser.rb
|
298
313
|
- lib/standup/report_generator.rb
|
299
314
|
- lib/standup/version.rb
|