gitlab-mergetrain-checker 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/mergetrain_check.rb +6 -6
- data/lib/mergetrain_check/args_parser.rb +3 -0
- data/lib/mergetrain_check/checker.rb +1 -1
- data/lib/mergetrain_check/config.rb +16 -6
- data/lib/mergetrain_check/error.rb +6 -0
- data/lib/mergetrain_check/formatter.rb +29 -1
- data/lib/mergetrain_check/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0154e482170ce0904d20d1f45010665807562bc8842064b4b57a024dd749d844
|
4
|
+
data.tar.gz: 73559f786d2d546e3b30f2511392735a8b889df9bcfa4b72f7a0296022a6c6a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11b7133b1c0d2940b3298f0324cb0cfd2fe0cc33ae791e327e3ad0ee9b38697ef2fee8999953ee367a564ec0eae1feb15f79499b6ca1c96f3d4ef3baf5f9d72f
|
7
|
+
data.tar.gz: b0a8b9d889a99a8509f561ede8bbd26b3567230d0278df9a14764d3d2abb3f3a65c68b46faabfa9ec01a959e8cc921db67a6cee36d405a12dc26065a6bf91aba
|
data/Gemfile.lock
CHANGED
data/lib/mergetrain_check.rb
CHANGED
@@ -2,13 +2,11 @@ require 'mergetrain_check/config'
|
|
2
2
|
require 'mergetrain_check/args_parser'
|
3
3
|
require 'mergetrain_check/checker'
|
4
4
|
require 'mergetrain_check/formatter'
|
5
|
+
require 'mergetrain_check/error'
|
5
6
|
|
6
7
|
module MergetrainCheck
|
7
|
-
|
8
|
-
|
9
|
-
super(description)
|
10
|
-
end
|
11
|
-
end
|
8
|
+
|
9
|
+
class MissingConfigError < CheckerError; end
|
12
10
|
|
13
11
|
class Command
|
14
12
|
@host = "www.gitlab.com"
|
@@ -33,7 +31,9 @@ module MergetrainCheck
|
|
33
31
|
checker = Checker.new(config.gitlab_host, config.auth_token, config.project_id)
|
34
32
|
traintable = checker.check
|
35
33
|
|
36
|
-
|
34
|
+
text_length = config.verbose ? 160: 80
|
35
|
+
first_name_only = !config.verbose
|
36
|
+
formatter = TraintableFormatter.new text_length, first_name_only
|
37
37
|
puts formatter.format traintable
|
38
38
|
config.save!
|
39
39
|
end
|
@@ -13,6 +13,9 @@ module MergetrainCheck
|
|
13
13
|
opts.on("-n", "--host GITLAB-HOSTNAME", "Specify the Gitlab installation host (in case it's not gitlab.com)") do |host|
|
14
14
|
options[:host] = host
|
15
15
|
end
|
16
|
+
opts.on("-v", "--verbose", "Verbose output (larger table)") do |verbose|
|
17
|
+
options[:verbose] = verbose
|
18
|
+
end
|
16
19
|
opts.on("-h", "--help", "Prints this help") do
|
17
20
|
puts opts
|
18
21
|
return nil
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'fileutils'
|
3
3
|
require 'keychain'
|
4
|
+
require 'mergetrain_check/error'
|
4
5
|
|
5
6
|
module MergetrainCheck
|
6
7
|
class AuthTokenStorage
|
@@ -26,17 +27,21 @@ module MergetrainCheck
|
|
26
27
|
|
27
28
|
DEFAULT_CONFIG_FILE = File.expand_path('~/.mergetraincheck')
|
28
29
|
|
29
|
-
class FileNotFoundError <
|
30
|
-
def initialize(description)
|
31
|
-
super(description)
|
32
|
-
end
|
33
|
-
end
|
30
|
+
class FileNotFoundError < CheckerError; end
|
34
31
|
|
35
32
|
class Config
|
36
33
|
def gitlab_host
|
37
34
|
@config[:host] || "www.gitlab.com"
|
38
35
|
end
|
39
36
|
|
37
|
+
def verbose
|
38
|
+
@config[:verbose]
|
39
|
+
end
|
40
|
+
|
41
|
+
def verbose=(value)
|
42
|
+
@confing[:verbose] = value
|
43
|
+
end
|
44
|
+
|
40
45
|
def gitlab_host=(value)
|
41
46
|
@config[:host] = value
|
42
47
|
@tokenStorage = AuthTokenStorage.new(value)
|
@@ -75,9 +80,14 @@ module MergetrainCheck
|
|
75
80
|
end
|
76
81
|
|
77
82
|
def save!(file = DEFAULT_CONFIG_FILE)
|
78
|
-
|
83
|
+
File.open(file, 'w') { |f| f.write(config_to_persist.to_yaml) }
|
79
84
|
@tokenStorage.save!
|
80
85
|
end
|
86
|
+
|
87
|
+
private
|
88
|
+
def config_to_persist
|
89
|
+
@config.reject { |k,v| ![:project_id, :host].include?(k) }
|
90
|
+
end
|
81
91
|
end
|
82
92
|
end
|
83
93
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'date'
|
2
|
+
|
1
3
|
module MergetrainCheck
|
2
4
|
class TraintableFormatter
|
3
5
|
def initialize(max_length, firstname_only)
|
@@ -6,9 +8,15 @@ module MergetrainCheck
|
|
6
8
|
end
|
7
9
|
|
8
10
|
def format(body)
|
9
|
-
values = [['St', 'MR', 'Pipe ID', 'User', 'Title']]
|
11
|
+
values = [['St', 'Waiting', 'Running', 'MR', 'Pipe ID', 'User', 'Title']]
|
10
12
|
body.each do |carriage|
|
13
|
+
begin_time = date_from_string carriage['created_at']
|
14
|
+
pipeline_begin_time = date_from_string carriage['pipeline']['created_at']
|
15
|
+
end_time = carriage['merged_at'].nil? ? DateTime.now : date_from_string(carriage['merged_at'])
|
16
|
+
|
11
17
|
values << [pipeline_status(carriage['status']),
|
18
|
+
pretty_date_difference(begin_time, pipeline_begin_time),
|
19
|
+
pretty_date_difference(pipeline_begin_time, end_time),
|
12
20
|
carriage['merge_request']['iid'],
|
13
21
|
carriage['pipeline']['id'],
|
14
22
|
@firstname_only ? carriage['user']['name'].split.first : carriage['user']['name'],
|
@@ -29,7 +37,13 @@ module MergetrainCheck
|
|
29
37
|
"#{string[0...len]}..."
|
30
38
|
end
|
31
39
|
|
40
|
+
def date_from_string(datestring)
|
41
|
+
DateTime.parse(datestring, '%Q')
|
42
|
+
end
|
32
43
|
|
44
|
+
def pretty_date_difference(from, to)
|
45
|
+
(to.to_time - from.to_time).duration
|
46
|
+
end
|
33
47
|
end
|
34
48
|
end
|
35
49
|
|
@@ -56,5 +70,19 @@ class Array
|
|
56
70
|
def count_emojis(string)
|
57
71
|
string.scan(/[\u{1F300}-\u{1F5FF}|\u{1F1E6}-\u{1F1FF}|\u{2700}-\u{27BF}|\u{1F900}-\u{1F9FF}|\u{1F600}-\u{1F64F}|\u{1F680}-\u{1F6FF}|\u{2600}-\u{26FF}]/).length
|
58
72
|
end
|
73
|
+
end
|
74
|
+
|
75
|
+
class Numeric
|
76
|
+
def duration
|
77
|
+
rest, secs = self.divmod( 60 ) # self is the time difference t2 - t1
|
78
|
+
rest, mins = rest.divmod( 60 )
|
79
|
+
days, hours = rest.divmod( 24 )
|
59
80
|
|
81
|
+
result = []
|
82
|
+
result << "#{days}D " if days > 0
|
83
|
+
result << "#{hours}h" if hours > 0
|
84
|
+
result << "#{mins}m" if mins > 0
|
85
|
+
result << "#{secs.to_i}s" if secs.to_i > 0
|
86
|
+
return result.join(' ')
|
87
|
+
end
|
60
88
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-mergetrain-checker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabio Gallonetto
|
@@ -42,6 +42,7 @@ files:
|
|
42
42
|
- lib/mergetrain_check/args_parser.rb
|
43
43
|
- lib/mergetrain_check/checker.rb
|
44
44
|
- lib/mergetrain_check/config.rb
|
45
|
+
- lib/mergetrain_check/error.rb
|
45
46
|
- lib/mergetrain_check/formatter.rb
|
46
47
|
- lib/mergetrain_check/version.rb
|
47
48
|
- mergetrain_check.gemspec
|