gitlab 4.10.0 → 4.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/README.md +26 -18
- data/lib/gitlab/api.rb +2 -0
- data/lib/gitlab/cli.rb +6 -8
- data/lib/gitlab/cli_helpers.rb +20 -25
- data/lib/gitlab/client/application_settings.rb +172 -0
- data/lib/gitlab/client/build_variables.rb +17 -12
- data/lib/gitlab/client/commits.rb +42 -5
- data/lib/gitlab/client/container_registry.rb +85 -0
- data/lib/gitlab/client/epic_issues.rb +23 -0
- data/lib/gitlab/client/epics.rb +73 -0
- data/lib/gitlab/client/group_badges.rb +88 -0
- data/lib/gitlab/client/group_labels.rb +1 -1
- data/lib/gitlab/client/groups.rb +153 -2
- data/lib/gitlab/client/issue_links.rb +48 -0
- data/lib/gitlab/client/issues.rb +1 -1
- data/lib/gitlab/client/jobs.rb +91 -8
- data/lib/gitlab/client/keys.rb +11 -0
- data/lib/gitlab/client/labels.rb +1 -1
- data/lib/gitlab/client/lint.rb +19 -0
- data/lib/gitlab/client/markdown.rb +23 -0
- data/lib/gitlab/client/merge_request_approvals.rb +160 -7
- data/lib/gitlab/client/merge_requests.rb +64 -4
- data/lib/gitlab/client/notes.rb +28 -1
- data/lib/gitlab/client/packages.rb +95 -0
- data/lib/gitlab/client/pipeline_schedules.rb +16 -4
- data/lib/gitlab/client/pipelines.rb +12 -0
- data/lib/gitlab/client/projects.rb +142 -8
- data/lib/gitlab/client/remote_mirrors.rb +51 -0
- data/lib/gitlab/client/repositories.rb +59 -3
- data/lib/gitlab/client/repository_files.rb +16 -0
- data/lib/gitlab/client/resource_state_events.rb +57 -0
- data/lib/gitlab/client/runners.rb +99 -14
- data/lib/gitlab/client/search.rb +5 -1
- data/lib/gitlab/client/user_snippets.rb +114 -0
- data/lib/gitlab/client/users.rb +142 -11
- data/lib/gitlab/client.rb +18 -2
- data/lib/gitlab/configuration.rb +1 -1
- data/lib/gitlab/error.rb +54 -0
- data/lib/gitlab/help.rb +8 -8
- data/lib/gitlab/objectified_hash.rb +23 -7
- data/lib/gitlab/page_links.rb +1 -1
- data/lib/gitlab/paginated_response.rb +23 -20
- data/lib/gitlab/request.rb +34 -33
- data/lib/gitlab/shell_history.rb +6 -10
- data/lib/gitlab/version.rb +1 -1
- data/lib/gitlab.rb +14 -6
- metadata +24 -47
data/lib/gitlab/request.rb
CHANGED
@@ -8,6 +8,7 @@ module Gitlab
|
|
8
8
|
class Request
|
9
9
|
include HTTParty
|
10
10
|
format :json
|
11
|
+
maintain_method_across_redirects true
|
11
12
|
headers 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded'
|
12
13
|
parser(proc { |body, _| parse(body) })
|
13
14
|
|
@@ -25,8 +26,6 @@ module Gitlab
|
|
25
26
|
true
|
26
27
|
elsif !body
|
27
28
|
false
|
28
|
-
elsif body.nil?
|
29
|
-
false
|
30
29
|
else
|
31
30
|
raise Error::Parsing, "Couldn't parse a response body"
|
32
31
|
end
|
@@ -41,29 +40,34 @@ module Gitlab
|
|
41
40
|
|
42
41
|
%w[get post put delete].each do |method|
|
43
42
|
define_method method do |path, options = {}|
|
44
|
-
|
45
|
-
|
46
|
-
|
43
|
+
params = options.dup
|
44
|
+
|
45
|
+
httparty_config(params)
|
46
|
+
|
47
|
+
unless params[:unauthenticated]
|
48
|
+
params[:headers] ||= {}
|
49
|
+
params[:headers].merge!(authorization_header)
|
50
|
+
end
|
51
|
+
|
52
|
+
retries_left = params[:ratelimit_retries] || 3
|
53
|
+
begin
|
54
|
+
response = self.class.send(method, endpoint + path, params)
|
55
|
+
validate response
|
56
|
+
rescue Gitlab::Error::TooManyRequests => e
|
57
|
+
retries_left -= 1
|
58
|
+
raise e if retries_left.zero?
|
59
|
+
|
60
|
+
wait_time = response.headers['Retry-After'] || 2
|
61
|
+
sleep(wait_time.to_i)
|
62
|
+
retry
|
63
|
+
end
|
47
64
|
end
|
48
65
|
end
|
49
66
|
|
50
67
|
# Checks the response code for common errors.
|
51
68
|
# Returns parsed response for successful requests.
|
52
69
|
def validate(response)
|
53
|
-
error_klass =
|
54
|
-
when 400 then Error::BadRequest
|
55
|
-
when 401 then Error::Unauthorized
|
56
|
-
when 403 then Error::Forbidden
|
57
|
-
when 404 then Error::NotFound
|
58
|
-
when 405 then Error::MethodNotAllowed
|
59
|
-
when 409 then Error::Conflict
|
60
|
-
when 422 then Error::Unprocessable
|
61
|
-
when 429 then Error::TooManyRequests
|
62
|
-
when 500 then Error::InternalServerError
|
63
|
-
when 502 then Error::BadGateway
|
64
|
-
when 503 then Error::ServiceUnavailable
|
65
|
-
end
|
66
|
-
|
70
|
+
error_klass = Error.klass(response)
|
67
71
|
raise error_klass, response if error_klass
|
68
72
|
|
69
73
|
parsed = response.parsed_response
|
@@ -75,28 +79,25 @@ module Gitlab
|
|
75
79
|
# Sets a base_uri and default_params for requests.
|
76
80
|
# @raise [Error::MissingCredentials] if endpoint not set.
|
77
81
|
def request_defaults(sudo = nil)
|
78
|
-
|
79
|
-
raise Error::MissingCredentials, 'Please set an endpoint to API' unless @endpoint
|
82
|
+
raise Error::MissingCredentials, 'Please set an endpoint to API' unless endpoint
|
80
83
|
|
84
|
+
self.class.default_params sudo: sudo
|
81
85
|
self.class.default_params.delete(:sudo) if sudo.nil?
|
82
86
|
end
|
83
87
|
|
84
88
|
private
|
85
89
|
|
86
|
-
#
|
90
|
+
# Returns an Authorization header hash
|
87
91
|
#
|
88
|
-
# @param [Hash] options A customizable set of options.
|
89
|
-
# @option options [Boolean] :unauthenticated true if the API call does not require user authentication.
|
90
92
|
# @raise [Error::MissingCredentials] if private_token and auth_token are not set.
|
91
|
-
def authorization_header
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
end
|
93
|
+
def authorization_header
|
94
|
+
raise Error::MissingCredentials, 'Please provide a private_token or auth_token for user' unless private_token
|
95
|
+
|
96
|
+
if private_token.size < 21
|
97
|
+
{ 'PRIVATE-TOKEN' => private_token }
|
98
|
+
else
|
99
|
+
{ 'Authorization' => "Bearer #{private_token}" }
|
100
|
+
end
|
100
101
|
end
|
101
102
|
|
102
103
|
# Set HTTParty configuration
|
data/lib/gitlab/shell_history.rb
CHANGED
@@ -30,12 +30,8 @@ class Gitlab::Shell
|
|
30
30
|
private
|
31
31
|
|
32
32
|
def history_file
|
33
|
-
|
34
|
-
|
35
|
-
else
|
36
|
-
@history_file = File.open(history_file_path, 'w', 0o600).tap do |file|
|
37
|
-
file.sync = true
|
38
|
-
end
|
33
|
+
@history_file ||= File.open(history_file_path, 'w', 0o600).tap do |file|
|
34
|
+
file.sync = true
|
39
35
|
end
|
40
36
|
rescue Errno::EACCES
|
41
37
|
warn 'History not saved; unable to open your history file for writing.'
|
@@ -46,12 +42,12 @@ class Gitlab::Shell
|
|
46
42
|
File.expand_path(@file_path)
|
47
43
|
end
|
48
44
|
|
49
|
-
def read_from_file
|
45
|
+
def read_from_file(&block)
|
50
46
|
path = history_file_path
|
51
47
|
|
52
|
-
File.foreach(path
|
53
|
-
rescue StandardError =>
|
54
|
-
warn "History file not loaded: #{
|
48
|
+
File.foreach(path, &block) if File.exist?(path)
|
49
|
+
rescue StandardError => e
|
50
|
+
warn "History file not loaded: #{e.message}"
|
55
51
|
end
|
56
52
|
|
57
53
|
def max_lines
|
data/lib/gitlab/version.rb
CHANGED
data/lib/gitlab.rb
CHANGED
@@ -21,11 +21,18 @@ module Gitlab
|
|
21
21
|
Gitlab::Client.new(options)
|
22
22
|
end
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
if Gem::Version.new(RUBY_VERSION).release >= Gem::Version.new('3.0.0')
|
25
|
+
def self.method_missing(method, *args, **keywargs, &block)
|
26
|
+
return super unless client.respond_to?(method)
|
27
|
+
|
28
|
+
client.send(method, *args, **keywargs, &block)
|
29
|
+
end
|
30
|
+
else
|
31
|
+
def self.method_missing(method, *args, &block)
|
32
|
+
return super unless client.respond_to?(method)
|
33
|
+
|
34
|
+
client.send(method, *args, &block)
|
35
|
+
end
|
29
36
|
end
|
30
37
|
|
31
38
|
# Delegate to Gitlab::Client
|
@@ -42,7 +49,8 @@ module Gitlab
|
|
42
49
|
#
|
43
50
|
# @return [Array<Symbol>]
|
44
51
|
def self.actions
|
45
|
-
hidden =
|
52
|
+
hidden =
|
53
|
+
/endpoint|private_token|auth_token|user_agent|sudo|get|post|put|\Adelete\z|validate\z|request_defaults|httparty/
|
46
54
|
(Gitlab::Client.instance_methods - Object.methods).reject { |e| e[hidden] }
|
47
55
|
end
|
48
56
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nihad Abbasov
|
@@ -9,35 +9,26 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-07-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - ">="
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: 0.14.0
|
21
18
|
- - "~>"
|
22
19
|
- !ruby/object:Gem::Version
|
23
|
-
version: '0.
|
20
|
+
version: '0.20'
|
24
21
|
type: :runtime
|
25
22
|
prerelease: false
|
26
23
|
version_requirements: !ruby/object:Gem::Requirement
|
27
24
|
requirements:
|
28
|
-
- - ">="
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
version: 0.14.0
|
31
25
|
- - "~>"
|
32
26
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
27
|
+
version: '0.20'
|
34
28
|
- !ruby/object:Gem::Dependency
|
35
29
|
name: terminal-table
|
36
30
|
requirement: !ruby/object:Gem::Requirement
|
37
31
|
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.5'
|
41
32
|
- - ">="
|
42
33
|
- !ruby/object:Gem::Version
|
43
34
|
version: 1.5.1
|
@@ -45,26 +36,9 @@ dependencies:
|
|
45
36
|
prerelease: false
|
46
37
|
version_requirements: !ruby/object:Gem::Requirement
|
47
38
|
requirements:
|
48
|
-
- - "~>"
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: '1.5'
|
51
39
|
- - ">="
|
52
40
|
- !ruby/object:Gem::Version
|
53
41
|
version: 1.5.1
|
54
|
-
- !ruby/object:Gem::Dependency
|
55
|
-
name: pry
|
56
|
-
requirement: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '0'
|
61
|
-
type: :development
|
62
|
-
prerelease: false
|
63
|
-
version_requirements: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '0'
|
68
42
|
- !ruby/object:Gem::Dependency
|
69
43
|
name: rake
|
70
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,20 +67,6 @@ dependencies:
|
|
93
67
|
- - ">="
|
94
68
|
- !ruby/object:Gem::Version
|
95
69
|
version: '0'
|
96
|
-
- !ruby/object:Gem::Dependency
|
97
|
-
name: rubocop
|
98
|
-
requirement: !ruby/object:Gem::Requirement
|
99
|
-
requirements:
|
100
|
-
- - ">="
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '0'
|
103
|
-
type: :development
|
104
|
-
prerelease: false
|
105
|
-
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - ">="
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
70
|
- !ruby/object:Gem::Dependency
|
111
71
|
name: webmock
|
112
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,6 +100,7 @@ files:
|
|
140
100
|
- lib/gitlab/cli_helpers.rb
|
141
101
|
- lib/gitlab/client.rb
|
142
102
|
- lib/gitlab/client/access_requests.rb
|
103
|
+
- lib/gitlab/client/application_settings.rb
|
143
104
|
- lib/gitlab/client/avatar.rb
|
144
105
|
- lib/gitlab/client/award_emojis.rb
|
145
106
|
- lib/gitlab/client/boards.rb
|
@@ -148,23 +109,31 @@ files:
|
|
148
109
|
- lib/gitlab/client/build_variables.rb
|
149
110
|
- lib/gitlab/client/builds.rb
|
150
111
|
- lib/gitlab/client/commits.rb
|
112
|
+
- lib/gitlab/client/container_registry.rb
|
151
113
|
- lib/gitlab/client/deployments.rb
|
152
114
|
- lib/gitlab/client/environments.rb
|
115
|
+
- lib/gitlab/client/epic_issues.rb
|
116
|
+
- lib/gitlab/client/epics.rb
|
153
117
|
- lib/gitlab/client/events.rb
|
154
118
|
- lib/gitlab/client/features.rb
|
119
|
+
- lib/gitlab/client/group_badges.rb
|
155
120
|
- lib/gitlab/client/group_boards.rb
|
156
121
|
- lib/gitlab/client/group_labels.rb
|
157
122
|
- lib/gitlab/client/group_milestones.rb
|
158
123
|
- lib/gitlab/client/groups.rb
|
124
|
+
- lib/gitlab/client/issue_links.rb
|
159
125
|
- lib/gitlab/client/issues.rb
|
160
126
|
- lib/gitlab/client/jobs.rb
|
161
127
|
- lib/gitlab/client/keys.rb
|
162
128
|
- lib/gitlab/client/labels.rb
|
129
|
+
- lib/gitlab/client/lint.rb
|
130
|
+
- lib/gitlab/client/markdown.rb
|
163
131
|
- lib/gitlab/client/merge_request_approvals.rb
|
164
132
|
- lib/gitlab/client/merge_requests.rb
|
165
133
|
- lib/gitlab/client/milestones.rb
|
166
134
|
- lib/gitlab/client/namespaces.rb
|
167
135
|
- lib/gitlab/client/notes.rb
|
136
|
+
- lib/gitlab/client/packages.rb
|
168
137
|
- lib/gitlab/client/pipeline_schedules.rb
|
169
138
|
- lib/gitlab/client/pipeline_triggers.rb
|
170
139
|
- lib/gitlab/client/pipelines.rb
|
@@ -174,10 +143,12 @@ files:
|
|
174
143
|
- lib/gitlab/client/project_releases.rb
|
175
144
|
- lib/gitlab/client/projects.rb
|
176
145
|
- lib/gitlab/client/protected_tags.rb
|
146
|
+
- lib/gitlab/client/remote_mirrors.rb
|
177
147
|
- lib/gitlab/client/repositories.rb
|
178
148
|
- lib/gitlab/client/repository_files.rb
|
179
149
|
- lib/gitlab/client/repository_submodules.rb
|
180
150
|
- lib/gitlab/client/resource_label_events.rb
|
151
|
+
- lib/gitlab/client/resource_state_events.rb
|
181
152
|
- lib/gitlab/client/runners.rb
|
182
153
|
- lib/gitlab/client/search.rb
|
183
154
|
- lib/gitlab/client/services.rb
|
@@ -187,6 +158,7 @@ files:
|
|
187
158
|
- lib/gitlab/client/tags.rb
|
188
159
|
- lib/gitlab/client/templates.rb
|
189
160
|
- lib/gitlab/client/todos.rb
|
161
|
+
- lib/gitlab/client/user_snippets.rb
|
190
162
|
- lib/gitlab/client/users.rb
|
191
163
|
- lib/gitlab/client/versions.rb
|
192
164
|
- lib/gitlab/client/wikis.rb
|
@@ -204,7 +176,12 @@ files:
|
|
204
176
|
homepage: https://github.com/NARKOZ/gitlab
|
205
177
|
licenses:
|
206
178
|
- BSD-2-Clause
|
207
|
-
metadata:
|
179
|
+
metadata:
|
180
|
+
homepage_uri: https://github.com/NARKOZ/gitlab
|
181
|
+
source_code_uri: https://github.com/NARKOZ/gitlab
|
182
|
+
bug_tracker_uri: https://github.com/NARKOZ/gitlab/issues
|
183
|
+
changelog_uri: https://github.com/NARKOZ/gitlab/releases
|
184
|
+
funding_uri: https://github.com/NARKOZ/SponsorMe
|
208
185
|
post_install_message:
|
209
186
|
rdoc_options: []
|
210
187
|
require_paths:
|
@@ -213,14 +190,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
213
190
|
requirements:
|
214
191
|
- - ">="
|
215
192
|
- !ruby/object:Gem::Version
|
216
|
-
version: '2.
|
193
|
+
version: '2.6'
|
217
194
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
195
|
requirements:
|
219
196
|
- - ">="
|
220
197
|
- !ruby/object:Gem::Version
|
221
198
|
version: '0'
|
222
199
|
requirements: []
|
223
|
-
rubygems_version: 3.
|
200
|
+
rubygems_version: 3.1.6
|
224
201
|
signing_key:
|
225
202
|
specification_version: 4
|
226
203
|
summary: A Ruby wrapper and CLI for the GitLab API
|