labclient 0.1.5 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/labclient.rb +16 -2
- data/lib/labclient/access_levels.rb +24 -30
- data/lib/labclient/client.rb +22 -8
- data/lib/labclient/commits/project_helpers.rb +4 -0
- data/lib/labclient/commits/show.rb +11 -2
- data/lib/labclient/common.rb +15 -6
- data/lib/labclient/docs.rb +4 -4
- data/lib/labclient/feature_flags/create.rb +48 -0
- data/lib/labclient/feature_flags/delete.rb +23 -0
- data/lib/labclient/feature_flags/feature_flag.rb +35 -0
- data/lib/labclient/feature_flags/list.rb +49 -0
- data/lib/labclient/files/update.rb +1 -1
- data/lib/labclient/generator/generator.rb +10 -0
- data/lib/labclient/generator/template_helper.rb +0 -1
- data/lib/labclient/groups/clusters/add.rb +46 -0
- data/lib/labclient/groups/clusters/client.rb +17 -0
- data/lib/labclient/groups/clusters/delete.rb +36 -0
- data/lib/labclient/groups/clusters/group_cluster.rb +37 -0
- data/lib/labclient/groups/clusters/list.rb +28 -0
- data/lib/labclient/groups/clusters/show.rb +29 -0
- data/lib/labclient/groups/clusters/update.rb +44 -0
- data/lib/labclient/groups/group.rb +14 -1
- data/lib/labclient/http.rb +8 -2
- data/lib/labclient/issues/issue.rb +10 -0
- data/lib/labclient/issues/update.rb +20 -2
- data/lib/labclient/jobs/delete.rb +1 -1
- data/lib/labclient/jobs/keep.rb +1 -1
- data/lib/labclient/jobs/play.rb +1 -1
- data/lib/labclient/jobs/trace.rb +2 -2
- data/lib/labclient/klass.rb +12 -7
- data/lib/labclient/lab_struct.rb +4 -0
- data/lib/labclient/overview.rb +68 -4
- data/lib/labclient/paginated_response.rb +2 -0
- data/lib/labclient/projects/clusters/add.rb +1 -1
- data/lib/labclient/projects/clusters/delete.rb +5 -6
- data/lib/labclient/projects/clusters/show.rb +2 -2
- data/lib/labclient/projects/clusters/update.rb +13 -5
- data/lib/labclient/projects/environments/project_environment.rb +10 -0
- data/lib/labclient/projects/environments/stop.rb +1 -1
- data/lib/labclient/projects/forks/fork.rb +0 -2
- data/lib/labclient/projects/methods.rb +6 -0
- data/lib/labclient/projects/reference.rb +1 -0
- data/lib/labclient/projects/stars/starrers.rb +0 -2
- data/lib/labclient/version.rb +1 -1
- metadata +17 -6
data/lib/labclient/klass.rb
CHANGED
@@ -14,7 +14,7 @@ module LabClient
|
|
14
14
|
|
15
15
|
# API Methods here have to be explicitly documented / custom helpers
|
16
16
|
# Assume no methods by default
|
17
|
-
# rubocop:disable Metrics/
|
17
|
+
# rubocop:disable Metrics/AbcSize
|
18
18
|
def help(help_filter = nil)
|
19
19
|
docs = LabClient::Docs.docs.dig(group_name, 'Reference')
|
20
20
|
unless docs
|
@@ -27,11 +27,9 @@ module LabClient
|
|
27
27
|
next unless doc[:options]
|
28
28
|
|
29
29
|
doc[:options].each do |opt|
|
30
|
-
if help_filter
|
31
|
-
next unless (opt[:name] + opt[:text]).include? help_filter.to_s
|
32
|
-
end
|
30
|
+
next if help_filter && !(opt[:name] + opt[:text]).include?(help_filter.to_s)
|
33
31
|
|
34
|
-
puts
|
32
|
+
puts " #{opt[:name]}"
|
35
33
|
puts " #{opt[:text]}\n"
|
36
34
|
end
|
37
35
|
end
|
@@ -39,7 +37,7 @@ module LabClient
|
|
39
37
|
# Ignore Output
|
40
38
|
nil
|
41
39
|
end
|
42
|
-
# rubocop:enable Metrics/
|
40
|
+
# rubocop:enable Metrics/AbcSize
|
43
41
|
|
44
42
|
# Documented API Methods
|
45
43
|
def api_methods
|
@@ -63,7 +61,12 @@ module LabClient
|
|
63
61
|
|
64
62
|
# TODO: Combine all of these?
|
65
63
|
def collect_project_id(position = 1)
|
66
|
-
|
64
|
+
# Check if Path / Pagination will be blank
|
65
|
+
if response.path.nil?
|
66
|
+
response.request.base_url.split(@client.base_url, 2)[position]
|
67
|
+
else
|
68
|
+
response.path.split('/')[position]
|
69
|
+
end
|
67
70
|
end
|
68
71
|
|
69
72
|
alias collect_group_id collect_project_id
|
@@ -97,6 +100,7 @@ module LabClient
|
|
97
100
|
self
|
98
101
|
end
|
99
102
|
|
103
|
+
# rubocop:disable Lint/MissingSuper
|
100
104
|
def initialize(hash = nil, response = nil, client = nil)
|
101
105
|
@client = client
|
102
106
|
@response = response
|
@@ -107,6 +111,7 @@ module LabClient
|
|
107
111
|
@table[k] = v
|
108
112
|
end
|
109
113
|
end
|
114
|
+
# rubocop:enable Lint/MissingSuper
|
110
115
|
|
111
116
|
# Forward response success
|
112
117
|
def success?
|
data/lib/labclient/lab_struct.rb
CHANGED
data/lib/labclient/overview.rb
CHANGED
@@ -8,11 +8,20 @@ module LabClient
|
|
8
8
|
doc 'Overview' do
|
9
9
|
title 'About'
|
10
10
|
markdown <<~DOC
|
11
|
-
|
11
|
+
LabClient is a Gitlab API Gem. Focusing on ease of use, documentation, helpers, and snippets.
|
12
12
|
|
13
|
-
|
13
|
+
- Objects for resources (User, Project)
|
14
|
+
- Method Chaining ( project.branch(:master).pipelines )
|
15
|
+
|
16
|
+
Lots of Helpers
|
17
|
+
|
18
|
+
- Pagination
|
19
|
+
- IRB/Pry
|
20
|
+
- Setup: credentials file, profiles, and prompt
|
21
|
+
- Permission Levels
|
22
|
+
- Curl generator
|
14
23
|
|
15
|
-
Here
|
24
|
+
Here is a quick whirlwind example of some of the features:
|
16
25
|
DOC
|
17
26
|
|
18
27
|
demo '350689'
|
@@ -93,6 +102,17 @@ module LabClient
|
|
93
102
|
DOC
|
94
103
|
end
|
95
104
|
|
105
|
+
doc 'Authentication' do
|
106
|
+
title 'OAuth Authorization'
|
107
|
+
desc 'Use OAuth access tokens to make requests to the API on behalf of a user. '
|
108
|
+
example <<~DOC
|
109
|
+
client = LabClient::Client.new(
|
110
|
+
url: 'https://gitlab.labclient',
|
111
|
+
token: 'gitlab oauth token',
|
112
|
+
token_type: 'Authorization'
|
113
|
+
)
|
114
|
+
DOC
|
115
|
+
end
|
96
116
|
doc 'Pagination' do
|
97
117
|
desc 'Pagination is enabled by default if not specified. Can be explicitly enabled or disabled'
|
98
118
|
example <<~DOC
|
@@ -206,16 +226,21 @@ module LabClient
|
|
206
226
|
doc 'Other' do
|
207
227
|
title 'Common Helpers'
|
208
228
|
markdown <<~DOC
|
209
|
-
The main api namespaces have a `help` and an `api_methods` methods. These will print out available methods and examples
|
229
|
+
The main api namespaces have a `help` and an `api_methods` methods. These will print out available methods and examples.
|
230
|
+
|
231
|
+
These each accept a filter argument
|
210
232
|
DOC
|
211
233
|
|
212
234
|
result <<~DOC
|
235
|
+
# General Help / Available Methods
|
213
236
|
client.help
|
214
237
|
client.api_methods
|
215
238
|
|
239
|
+
# Show Project specific Methods
|
216
240
|
client.projects.api_methods
|
217
241
|
# => [:show, :list, :create]
|
218
242
|
|
243
|
+
# Show Users specific help
|
219
244
|
client.users.help
|
220
245
|
Users
|
221
246
|
Available Methods
|
@@ -230,6 +255,26 @@ module LabClient
|
|
230
255
|
User
|
231
256
|
- client.users.show(5)
|
232
257
|
- client.users.show(5)
|
258
|
+
|
259
|
+
# General Help Filter
|
260
|
+
client.help :protect
|
261
|
+
Available Methods
|
262
|
+
- protected_branches protected_environments protected_tags
|
263
|
+
|
264
|
+
# Projects Help Filter
|
265
|
+
client.projects.help :cluster
|
266
|
+
Projects
|
267
|
+
Available Methods
|
268
|
+
- clusters
|
269
|
+
|
270
|
+
# Project Object Help
|
271
|
+
project = client.projects.show(16)
|
272
|
+
project.help
|
273
|
+
|
274
|
+
# Project Object Help Filter
|
275
|
+
project.help :member
|
276
|
+
|
277
|
+
|
233
278
|
DOC
|
234
279
|
end
|
235
280
|
|
@@ -248,6 +293,9 @@ module LabClient
|
|
248
293
|
# Awesome Print all details
|
249
294
|
project.valid_group_project_levels
|
250
295
|
# => [:guest, :reporter, :developer, :maintainer, :owner]
|
296
|
+
|
297
|
+
# Select Data from objects with `slice`
|
298
|
+
project.slice(:readme_url, :owner)
|
251
299
|
DOC
|
252
300
|
end
|
253
301
|
|
@@ -291,6 +339,22 @@ module LabClient
|
|
291
339
|
DOC
|
292
340
|
end
|
293
341
|
|
342
|
+
doc 'Other' do
|
343
|
+
title 'Quiet'
|
344
|
+
desc 'Error messages by default are printed to STDOUT. This can be supressed via the :quiet setting'
|
345
|
+
|
346
|
+
example <<~DOC
|
347
|
+
client = LabClient::Client.new(
|
348
|
+
url: 'https://gitlab.labclient',
|
349
|
+
token: 'gitlab api token',
|
350
|
+
quiet: true
|
351
|
+
)
|
352
|
+
|
353
|
+
# Or after the init
|
354
|
+
client.settings[:quiet] = true
|
355
|
+
DOC
|
356
|
+
end
|
357
|
+
|
294
358
|
doc 'Other' do
|
295
359
|
title 'Curl'
|
296
360
|
desc 'Sometimes you just wana have a curl example to test or send someone'
|
@@ -40,7 +40,9 @@ module LabClient
|
|
40
40
|
DOC
|
41
41
|
end
|
42
42
|
|
43
|
+
# rubocop:disable Lint/MissingSuper
|
43
44
|
def respond_to_missing?(method_name, include_private = false); end
|
45
|
+
# rubocop:enable Lint/MissingSuper
|
44
46
|
|
45
47
|
def each_page(&block)
|
46
48
|
yield @array # This will eventually be the whole list
|
@@ -27,7 +27,7 @@ module LabClient
|
|
27
27
|
| --------- | ---- | -------- | ----------- |
|
28
28
|
| name | string | yes | The name of the cluster |
|
29
29
|
| domain | string | no | The base domain of the cluster |
|
30
|
-
| management_project_id | integer | no | The ID of the
|
30
|
+
| management_project_id | integer | no | The ID of the management project for the cluster |
|
31
31
|
| enabled | boolean | no | Determines if cluster is active or not, defaults to true |
|
32
32
|
| managed | boolean | no | Determines if GitLab will manage namespaces and service accounts for this cluster, defaults to true |
|
33
33
|
| platform_kubernetes_attributes[api_url] | string | yes | The URL to access the Kubernetes API |
|
@@ -11,11 +11,10 @@ module LabClient
|
|
11
11
|
|
12
12
|
doc 'Delete' do
|
13
13
|
markdown <<~DOC
|
14
|
-
| Attribute
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
| only_protected_branches| Boolean | no | Determines if only protected branches are clustered. |
|
14
|
+
| Attribute | Type | Required | Description |
|
15
|
+
| --------- | ---- | -------- | ----------- |
|
16
|
+
| `id` | integer | yes | The ID of the project owned by the authenticated user |
|
17
|
+
| `cluster_id` | integer | yes | The ID of the cluster |
|
19
18
|
DOC
|
20
19
|
end
|
21
20
|
|
@@ -23,7 +22,7 @@ module LabClient
|
|
23
22
|
desc 'Via ProjectCluster [Params]'
|
24
23
|
example <<~DOC
|
25
24
|
cluster = client.projects.clusters.list(310).first
|
26
|
-
cluster.
|
25
|
+
cluster.delete
|
27
26
|
DOC
|
28
27
|
end
|
29
28
|
|
@@ -11,11 +11,19 @@ module LabClient
|
|
11
11
|
|
12
12
|
doc 'Update' do
|
13
13
|
markdown <<~DOC
|
14
|
-
| Attribute
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
| Attribute | Type | Required | Description |
|
15
|
+
| --------- | ---- | -------- | ----------- |
|
16
|
+
| name | string | yes | The name of the cluster |
|
17
|
+
| domain | string | no | The base domain of the cluster |
|
18
|
+
| management_project_id | integer | no | The ID of the management project for the cluster |
|
19
|
+
| platform_kubernetes_attributes[api_url] | string | yes | The URL to access the Kubernetes API |
|
20
|
+
| platform_kubernetes_attributes[token] | string | yes | The token to authenticate against Kubernetes |
|
21
|
+
| platform_kubernetes_attributes[ca_cert] | string | no | TLS certificate. Required if API is using a self-signed TLS certificate. |
|
22
|
+
| platform_kubernetes_attributes[namespace] | string | no | The unique namespace related to the project |
|
23
|
+
| environment_scope | string | no | The associated environment to the cluster. Defaults to * **(PREMIUM)** |
|
24
|
+
|
25
|
+
`name`, `api_url`, `ca_cert` and `token` can only be updated if the cluster was added through the
|
26
|
+
“Add existing Kubernetes cluster” option or through the “Add existing cluster to project” endpoint.
|
19
27
|
DOC
|
20
28
|
end
|
21
29
|
|
@@ -24,6 +24,14 @@ module LabClient
|
|
24
24
|
client.projects.environments.delete(project_id, id)
|
25
25
|
end
|
26
26
|
|
27
|
+
def show
|
28
|
+
project_id = collect_project_id
|
29
|
+
|
30
|
+
update_self client.projects.environments.show(project_id, id)
|
31
|
+
end
|
32
|
+
|
33
|
+
alias reload show
|
34
|
+
|
27
35
|
def stop
|
28
36
|
project_id = collect_project_id
|
29
37
|
|
@@ -35,6 +43,8 @@ module LabClient
|
|
35
43
|
help do
|
36
44
|
subtitle 'ProjectEnvironment'
|
37
45
|
option 'project', 'Show Project'
|
46
|
+
option 'show', 'Collect/reload environment'
|
47
|
+
option 'reload', 'Collect/reload environment'
|
38
48
|
option 'update', 'Update this environment [Hash]'
|
39
49
|
option 'delete', 'Delete this environment'
|
40
50
|
option 'stop', 'Stop this environment'
|
@@ -21,7 +21,7 @@ module LabClient
|
|
21
21
|
project_id = format_id(project_id)
|
22
22
|
environment_id = format_id(environment_id)
|
23
23
|
|
24
|
-
client.request(:
|
24
|
+
client.request(:post, "projects/#{project_id}/environments/#{environment_id}/stop", nil)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -476,6 +476,8 @@ module LabClient
|
|
476
476
|
client.projects.environments.show(id, environment_id)
|
477
477
|
end
|
478
478
|
|
479
|
+
alias environment environment_show
|
480
|
+
|
479
481
|
def environment_create(query)
|
480
482
|
client.projects.environments.create(id, query)
|
481
483
|
end
|
@@ -707,6 +709,10 @@ module LabClient
|
|
707
709
|
client.projects.clusters.list(id)
|
708
710
|
end
|
709
711
|
|
712
|
+
def cluster(cluster_id)
|
713
|
+
client.projects.clusters.show(id, cluster_id)
|
714
|
+
end
|
715
|
+
|
710
716
|
# Reload
|
711
717
|
def reload
|
712
718
|
update_self client.projects.show(id)
|
@@ -139,6 +139,7 @@ module LabClient
|
|
139
139
|
|
140
140
|
# Commits
|
141
141
|
option 'commits', 'List Commits [Hash]'
|
142
|
+
option 'commit', 'Show Commit [String/Commit Sha]'
|
142
143
|
option 'commit_create', 'Create new commit [Hash]'
|
143
144
|
option 'commit_refs', 'Get all references (from branches or tags) a commit is pushed to. [Commit ID, Scope]'
|
144
145
|
option 'commit_cherry_pick', 'Cherry picks a commit to a target branch. [Commit ID, Branch]'
|
data/lib/labclient/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: labclient
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Davin Walker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -210,16 +210,16 @@ dependencies:
|
|
210
210
|
name: rubocop
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
|
-
- - "
|
213
|
+
- - "<"
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
215
|
+
version: 0.91.0
|
216
216
|
type: :development
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
|
-
- - "
|
220
|
+
- - "<"
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
222
|
+
version: 0.91.0
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
224
|
name: simplecov
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -398,6 +398,10 @@ files:
|
|
398
398
|
- lib/labclient/events/list.rb
|
399
399
|
- lib/labclient/events/project.rb
|
400
400
|
- lib/labclient/events/user.rb
|
401
|
+
- lib/labclient/feature_flags/create.rb
|
402
|
+
- lib/labclient/feature_flags/delete.rb
|
403
|
+
- lib/labclient/feature_flags/feature_flag.rb
|
404
|
+
- lib/labclient/feature_flags/list.rb
|
401
405
|
- lib/labclient/files/create.rb
|
402
406
|
- lib/labclient/files/delete.rb
|
403
407
|
- lib/labclient/files/show.rb
|
@@ -423,6 +427,13 @@ files:
|
|
423
427
|
- lib/labclient/groups/badges/preview.rb
|
424
428
|
- lib/labclient/groups/badges/show.rb
|
425
429
|
- lib/labclient/groups/badges/update.rb
|
430
|
+
- lib/labclient/groups/clusters/add.rb
|
431
|
+
- lib/labclient/groups/clusters/client.rb
|
432
|
+
- lib/labclient/groups/clusters/delete.rb
|
433
|
+
- lib/labclient/groups/clusters/group_cluster.rb
|
434
|
+
- lib/labclient/groups/clusters/list.rb
|
435
|
+
- lib/labclient/groups/clusters/show.rb
|
436
|
+
- lib/labclient/groups/clusters/update.rb
|
426
437
|
- lib/labclient/groups/create.rb
|
427
438
|
- lib/labclient/groups/delete.rb
|
428
439
|
- lib/labclient/groups/group.rb
|