gitlab 4.10.0 → 4.19.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 +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
|