labclient 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a747d261d131d7f0a228cb02753e21798c951393941247d0d4252a9c253c5650
4
- data.tar.gz: 228a9181e7345f607e8d4ab6617d729f9b4b44ab7e1fdcd295db4ed3332a257d
3
+ metadata.gz: 0c77fa948bc39c9ec7d677340949a7bc52ed03999c4cb5286d125154edb06f9b
4
+ data.tar.gz: fa96ed5df9a9ddf7eea56cd7eb7a34832b4a9509d982159fd8069c5ae49de241
5
5
  SHA512:
6
- metadata.gz: 2d66d602d12ccd265ae6b1e5aa28c0cdeabbbcc0ee678c5be80a30c42ef342e7b9308acf0a075da04cd4bbb76c744ce32d52122e0f4b87c36c9a9faf09b7834a
7
- data.tar.gz: c3eaf2cb6c83effec491f071bf0e5de9f2638f68d0af5656ae146915245eb00b091d7a566ef6c28c88db562a9b71cf8b773798fd7890693b098fbc66bdfd9adb
6
+ metadata.gz: 2148330fb1c533956e2f51085729c7c8e96b8fc27e21b43bbbac2b492906047bc52d964b203fe42ac86fc2f041310ab6c6b4e7f90ae5935efcedaf11674a4363
7
+ data.tar.gz: 004cbd92b60fd45996a4ecd9ae38039b3bae703a22f4d804e34390a56662a0f0859992295a83bf0d53f7e4e6191e2c9f416fcc4b7618e54e1b944c73aa4478fc
@@ -857,6 +857,12 @@ require 'labclient/resource_labels/merge_requests/client'
857
857
  require 'labclient/resource_labels/merge_requests/list'
858
858
  require 'labclient/resource_labels/merge_requests/show'
859
859
 
860
+ # Feature Flags
861
+ require 'labclient/feature_flags/create'
862
+ require 'labclient/feature_flags/delete'
863
+ require 'labclient/feature_flags/list'
864
+ require 'labclient/feature_flags/feature_flag'
865
+
860
866
  require 'labclient/resource_labels/resource_label'
861
867
 
862
868
  # Generators
@@ -37,8 +37,8 @@ module LabClient
37
37
  discussions: Discussions,
38
38
  epics: Epics,
39
39
  events: Events,
40
+ feature_flags: FeatureFlags,
40
41
  files: Files,
41
- wizard: Generator::Wizard,
42
42
  groups: Groups,
43
43
  impersonation_tokens: ImpersonationTokens,
44
44
  issues: Issues,
@@ -69,7 +69,8 @@ module LabClient
69
69
  todos: Todos,
70
70
  users: Users,
71
71
  version: Version,
72
- wikis: Wikis
72
+ wikis: Wikis,
73
+ wizard: Generator::Wizard
73
74
  }
74
75
 
75
76
  @subclasses.each do |name, obj|
@@ -116,6 +117,10 @@ module LabClient
116
117
  self.http = HTTP.new(@settings)
117
118
  end
118
119
 
120
+ def base_url
121
+ "#{settings[:url]}/api/v4/"
122
+ end
123
+
119
124
  def prompt_for_url
120
125
  print 'Enter GitLab URL (e.g. https://gitlab.com): '
121
126
  @settings[:url] = $stdin.gets.chomp
@@ -0,0 +1,48 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class FeatureFlags < Common
5
+ doc 'Create' do
6
+ title 'Set or create a feature'
7
+ example 'client.feature_flags.create(:create_eks_clusters, value: true)'
8
+ result <<~DOC
9
+ => #<FeatureFlag name: create_eks_clusters, state: on
10
+ DOC
11
+ end
12
+
13
+ doc 'Attributes' do
14
+ desc 'Register a new Application'
15
+ markdown <<~DOC
16
+ | Attribute | Type | Required | Description |
17
+ | --------- | ---- | -------- | ----------- |
18
+ | name | string | yes | Name of the feature to create or update |
19
+ | value | integer/string | yes | `true` or `false` to enable/disable, or an integer for percentage of time |
20
+ | feature_group | string | no | A Feature group name |
21
+ | user | string | no | A GitLab username |
22
+ | group | string | no | A GitLab group's path, for example gitlab-org |
23
+ | project | string | no | A projects path, for example gitlab-org/gitlab-foss |
24
+
25
+ Note that you can enable or disable a feature for a `feature_group`, a `user`,
26
+ a `group`, and a `project` in a single API call.
27
+ DOC
28
+ end
29
+
30
+ doc 'Create' do
31
+ example <<~DOC
32
+ client.applications.create(
33
+ name: "Grafana",
34
+ redirect_uri: "https://gitlab.com/-/grafana/login/gitlab",
35
+ scopes: "email"
36
+ )
37
+ DOC
38
+ result <<~DOC
39
+ #<Application id: 11, Grafana>
40
+ DOC
41
+ end
42
+
43
+ # Create
44
+ def create(name, query = {})
45
+ client.request(:post, "features/#{name}", FeatureFlag, query)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,23 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class FeatureFlags < Common
5
+ doc 'Delete' do
6
+ title 'Delete a feature'
7
+ example 'client.feature_flags.delete(:name)'
8
+ end
9
+
10
+ doc 'Delete' do
11
+ desc 'Delete via FeatureFlag'
12
+ example <<~DOC
13
+ feature = client.feature_flags.list.first
14
+ feature.delete
15
+ DOC
16
+ end
17
+
18
+ # Delete
19
+ def delete(name)
20
+ client.request(:delete, "features/#{name}")
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,35 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Inspect Helper
4
+ class FeatureFlag < Klass
5
+ include ClassHelpers
6
+ def inspect
7
+ "#<FeatureFlag name: #{name}, state: #{state}>"
8
+ end
9
+
10
+ def delete
11
+ client.feature_flags.delete name
12
+ end
13
+
14
+ def update(query)
15
+ update_self client.feature_flags.create(name, query)
16
+ end
17
+
18
+ def toggle
19
+ if state == 'off'
20
+ update(value: true)
21
+ else
22
+ update(value: false)
23
+ end
24
+ end
25
+
26
+ date_time_attrs %i[created_at]
27
+
28
+ help do
29
+ subtitle 'Feature Flag'
30
+ option 'delete', 'Delete this specific feature flag'
31
+ option 'toggle', 'Disable / Turn on feature'
32
+ option 'update', 'Create flag / Update with values [Hash]'
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,49 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class FeatureFlags < Common
5
+ doc 'List' do
6
+ title 'List all features'
7
+ desc 'Get a list of all persisted features, with its gate values.'
8
+ example 'client.feature_flags.list'
9
+ result <<~DOC
10
+ => [#<Feature name: create_eks_clusters, state: on>]
11
+ DOC
12
+ end
13
+
14
+ doc 'List' do
15
+ title 'View detail of features'
16
+ desc 'Retrieve detailed information of feature flags'
17
+ example 'client.feature_flags.list.each(&:verbose)'
18
+ result <<~DOC
19
+ LabClient::Feature {
20
+ :name => "create_eks_clusters",
21
+ :state => "on",
22
+ :gates => [
23
+ [0] OpenStruct {
24
+ :key => "boolean",
25
+ :value => true
26
+ }
27
+ ]
28
+ }
29
+ => [#<Feature name: create_eks_clusters, state: on>]
30
+ DOC
31
+ end
32
+
33
+ doc 'List' do
34
+ title 'Toggle all features on or off'
35
+ example <<~DOC
36
+ client.feature_flags.list.each(&:toggle)
37
+ DOC
38
+ result <<~DOC
39
+ [#<Feature name: create_eks_clusters, state: off>,
40
+ #<Feature name: merge_train1, state: off>,
41
+ #<Feature name: merge_train2, state: off>]
42
+ DOC
43
+ end
44
+
45
+ def list
46
+ client.request(:get, 'features', FeatureFlag)
47
+ end
48
+ end
49
+ end
@@ -26,6 +26,16 @@ module LabClient
26
26
  example 'gem install faker'
27
27
  end
28
28
 
29
+ doc 'Wizard' do
30
+ title 'Quickstart'
31
+ desc 'To run, create the client/wizard and run!'
32
+ example <<~DOC
33
+ require 'labclient'
34
+ client = LabClient::Client.new(url: 'https://labclient', token: 'super_secret')
35
+ client.wizard.run!
36
+ DOC
37
+ end
38
+
29
39
  doc 'Wizard' do
30
40
  title 'Client'
31
41
  desc <<-DOC
@@ -61,7 +61,12 @@ module LabClient
61
61
 
62
62
  # TODO: Combine all of these?
63
63
  def collect_project_id(position = 1)
64
- response.path.split('/')[position]
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
65
70
  end
66
71
 
67
72
  alias collect_group_id collect_project_id
@@ -8,11 +8,20 @@ module LabClient
8
8
  doc 'Overview' do
9
9
  title 'About'
10
10
  markdown <<~DOC
11
- Labclient is another Gitlab API Gem. A focus on ease of use and helpers and snippets.
11
+ LabClient is a Gitlab API Gem. Focusing on ease of use, documentation, helpers, and snippets.
12
12
 
13
- <a href="https://github.com/NARKOZ/gitlab">Gitlab</a> is an excellent gem, and is nearly complete in its implementation. While this is still a work in progress and you are looking for general use you should use it.
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's a quick whirlwind example of some of the features:
24
+ Here is a quick whirlwind example of some of the features:
16
25
  DOC
17
26
 
18
27
  demo '350689'
@@ -1,3 +1,3 @@
1
1
  module LabClient
2
- VERSION = '0.3.0'.freeze
2
+ VERSION = '0.3.1'.freeze
3
3
  end
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.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Davin Walker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-17 00:00:00.000000000 Z
11
+ date: 2020-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -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
@@ -909,7 +913,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
909
913
  - !ruby/object:Gem::Version
910
914
  version: '0'
911
915
  requirements: []
912
- rubygems_version: 3.0.3
916
+ rubygems_version: 3.1.4
913
917
  signing_key:
914
918
  specification_version: 4
915
919
  summary: Gitlab API Client