fs-gitlab 4.18.1

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.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +270 -0
  3. data/LICENSE.txt +24 -0
  4. data/README.md +260 -0
  5. data/exe/gitlab +11 -0
  6. data/lib/gitlab/api.rb +24 -0
  7. data/lib/gitlab/cli.rb +89 -0
  8. data/lib/gitlab/cli_helpers.rb +243 -0
  9. data/lib/gitlab/client/access_requests.rb +103 -0
  10. data/lib/gitlab/client/application_settings.rb +172 -0
  11. data/lib/gitlab/client/avatar.rb +21 -0
  12. data/lib/gitlab/client/award_emojis.rb +137 -0
  13. data/lib/gitlab/client/boards.rb +146 -0
  14. data/lib/gitlab/client/branches.rb +135 -0
  15. data/lib/gitlab/client/broadcast_messages.rb +75 -0
  16. data/lib/gitlab/client/build_variables.rb +135 -0
  17. data/lib/gitlab/client/builds.rb +108 -0
  18. data/lib/gitlab/client/commits.rb +216 -0
  19. data/lib/gitlab/client/container_registry.rb +85 -0
  20. data/lib/gitlab/client/deployments.rb +34 -0
  21. data/lib/gitlab/client/environments.rb +89 -0
  22. data/lib/gitlab/client/epic_issues.rb +23 -0
  23. data/lib/gitlab/client/epics.rb +73 -0
  24. data/lib/gitlab/client/events.rb +60 -0
  25. data/lib/gitlab/client/features.rb +48 -0
  26. data/lib/gitlab/client/group_badges.rb +88 -0
  27. data/lib/gitlab/client/group_boards.rb +141 -0
  28. data/lib/gitlab/client/group_labels.rb +88 -0
  29. data/lib/gitlab/client/group_milestones.rb +94 -0
  30. data/lib/gitlab/client/groups.rb +358 -0
  31. data/lib/gitlab/client/issue_links.rb +48 -0
  32. data/lib/gitlab/client/issues.rb +231 -0
  33. data/lib/gitlab/client/jobs.rb +250 -0
  34. data/lib/gitlab/client/keys.rb +29 -0
  35. data/lib/gitlab/client/labels.rb +88 -0
  36. data/lib/gitlab/client/lint.rb +19 -0
  37. data/lib/gitlab/client/markdown.rb +23 -0
  38. data/lib/gitlab/client/merge_request_approvals.rb +265 -0
  39. data/lib/gitlab/client/merge_requests.rb +386 -0
  40. data/lib/gitlab/client/milestones.rb +106 -0
  41. data/lib/gitlab/client/namespaces.rb +22 -0
  42. data/lib/gitlab/client/notes.rb +313 -0
  43. data/lib/gitlab/client/packages.rb +95 -0
  44. data/lib/gitlab/client/pipeline_schedules.rb +147 -0
  45. data/lib/gitlab/client/pipeline_triggers.rb +103 -0
  46. data/lib/gitlab/client/pipelines.rb +105 -0
  47. data/lib/gitlab/client/project_badges.rb +85 -0
  48. data/lib/gitlab/client/project_clusters.rb +83 -0
  49. data/lib/gitlab/client/project_release_links.rb +76 -0
  50. data/lib/gitlab/client/project_releases.rb +79 -0
  51. data/lib/gitlab/client/projects.rb +708 -0
  52. data/lib/gitlab/client/protected_tags.rb +59 -0
  53. data/lib/gitlab/client/remote_mirrors.rb +51 -0
  54. data/lib/gitlab/client/repositories.rb +113 -0
  55. data/lib/gitlab/client/repository_files.rb +131 -0
  56. data/lib/gitlab/client/repository_submodules.rb +27 -0
  57. data/lib/gitlab/client/resource_label_events.rb +82 -0
  58. data/lib/gitlab/client/resource_state_events.rb +57 -0
  59. data/lib/gitlab/client/runners.rb +211 -0
  60. data/lib/gitlab/client/search.rb +66 -0
  61. data/lib/gitlab/client/services.rb +53 -0
  62. data/lib/gitlab/client/sidekiq.rb +39 -0
  63. data/lib/gitlab/client/snippets.rb +95 -0
  64. data/lib/gitlab/client/system_hooks.rb +64 -0
  65. data/lib/gitlab/client/tags.rb +97 -0
  66. data/lib/gitlab/client/templates.rb +100 -0
  67. data/lib/gitlab/client/todos.rb +46 -0
  68. data/lib/gitlab/client/user_snippets.rb +114 -0
  69. data/lib/gitlab/client/users.rb +397 -0
  70. data/lib/gitlab/client/versions.rb +18 -0
  71. data/lib/gitlab/client/wikis.rb +79 -0
  72. data/lib/gitlab/client.rb +95 -0
  73. data/lib/gitlab/configuration.rb +57 -0
  74. data/lib/gitlab/error.rb +170 -0
  75. data/lib/gitlab/file_response.rb +48 -0
  76. data/lib/gitlab/help.rb +94 -0
  77. data/lib/gitlab/objectified_hash.rb +51 -0
  78. data/lib/gitlab/page_links.rb +35 -0
  79. data/lib/gitlab/paginated_response.rb +110 -0
  80. data/lib/gitlab/request.rb +109 -0
  81. data/lib/gitlab/shell.rb +83 -0
  82. data/lib/gitlab/shell_history.rb +57 -0
  83. data/lib/gitlab/version.rb +5 -0
  84. data/lib/gitlab.rb +56 -0
  85. metadata +204 -0
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gitlab
4
+ # Wrapper class of paginated response.
5
+ class PaginatedResponse
6
+ attr_accessor :client
7
+
8
+ def initialize(array)
9
+ @array = array
10
+ end
11
+
12
+ def ==(other)
13
+ @array == other
14
+ end
15
+
16
+ def inspect
17
+ @array.inspect
18
+ end
19
+
20
+ def method_missing(name, *args, &block)
21
+ if @array.respond_to?(name)
22
+ @array.send(name, *args, &block)
23
+ else
24
+ super
25
+ end
26
+ end
27
+
28
+ def respond_to_missing?(method_name, include_private = false)
29
+ super || @array.respond_to?(method_name, include_private)
30
+ end
31
+
32
+ def parse_headers!(headers)
33
+ @links = PageLinks.new headers
34
+ end
35
+
36
+ def each_page
37
+ current = self
38
+ yield current
39
+ while current.has_next_page?
40
+ current = current.next_page
41
+ yield current
42
+ end
43
+ end
44
+
45
+ def lazy_paginate
46
+ to_enum(:each_page).lazy.flat_map(&:to_ary)
47
+ end
48
+
49
+ def auto_paginate(&block)
50
+ return lazy_paginate.to_a unless block
51
+
52
+ lazy_paginate.each(&block)
53
+ end
54
+
55
+ def paginate_with_limit(limit, &block)
56
+ return lazy_paginate.take(limit).to_a unless block
57
+
58
+ lazy_paginate.take(limit).each(&block)
59
+ end
60
+
61
+ def last_page?
62
+ !(@links.nil? || @links.last.nil?)
63
+ end
64
+ alias has_last_page? last_page?
65
+
66
+ def last_page
67
+ return nil if @client.nil? || !has_last_page?
68
+
69
+ @client.get(client_relative_path(@links.last))
70
+ end
71
+
72
+ def first_page?
73
+ !(@links.nil? || @links.first.nil?)
74
+ end
75
+ alias has_first_page? first_page?
76
+
77
+ def first_page
78
+ return nil if @client.nil? || !has_first_page?
79
+
80
+ @client.get(client_relative_path(@links.first))
81
+ end
82
+
83
+ def next_page?
84
+ !(@links.nil? || @links.next.nil?)
85
+ end
86
+ alias has_next_page? next_page?
87
+
88
+ def next_page
89
+ return nil if @client.nil? || !has_next_page?
90
+
91
+ @client.get(client_relative_path(@links.next))
92
+ end
93
+
94
+ def prev_page?
95
+ !(@links.nil? || @links.prev.nil?)
96
+ end
97
+ alias has_prev_page? prev_page?
98
+
99
+ def prev_page
100
+ return nil if @client.nil? || !has_prev_page?
101
+
102
+ @client.get(client_relative_path(@links.prev))
103
+ end
104
+
105
+ def client_relative_path(link)
106
+ client_endpoint_path = URI.parse(@client.endpoint).request_uri # api/v4
107
+ URI.parse(link).request_uri.sub(client_endpoint_path, '')
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'httparty'
4
+ require 'json'
5
+
6
+ module Gitlab
7
+ # @private
8
+ class Request
9
+ include HTTParty
10
+ format :json
11
+ maintain_method_across_redirects true
12
+ headers 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded'
13
+ parser(proc { |body, _| parse(body) })
14
+
15
+ attr_accessor :private_token, :endpoint
16
+
17
+ # Converts the response body to an ObjectifiedHash.
18
+ def self.parse(body)
19
+ body = decode(body)
20
+
21
+ if body.is_a? Hash
22
+ ObjectifiedHash.new body
23
+ elsif body.is_a? Array
24
+ PaginatedResponse.new(body.collect! { |e| ObjectifiedHash.new(e) })
25
+ elsif body
26
+ true
27
+ elsif !body
28
+ false
29
+ else
30
+ raise Error::Parsing, "Couldn't parse a response body"
31
+ end
32
+ end
33
+
34
+ # Decodes a JSON response into Ruby object.
35
+ def self.decode(response)
36
+ response ? JSON.load(response) : {}
37
+ rescue JSON::ParserError
38
+ raise Error::Parsing, 'The response is not a valid JSON'
39
+ end
40
+
41
+ %w[get post put delete].each do |method|
42
+ define_method method do |path, options = {}|
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
64
+ end
65
+ end
66
+
67
+ # Checks the response code for common errors.
68
+ # Returns parsed response for successful requests.
69
+ def validate(response)
70
+ error_klass = Error.klass(response)
71
+ raise error_klass, response if error_klass
72
+
73
+ parsed = response.parsed_response
74
+ parsed.client = self if parsed.respond_to?(:client=)
75
+ parsed.parse_headers!(response.headers) if parsed.respond_to?(:parse_headers!)
76
+ parsed
77
+ end
78
+
79
+ # Sets a base_uri and default_params for requests.
80
+ # @raise [Error::MissingCredentials] if endpoint not set.
81
+ def request_defaults(sudo = nil)
82
+ raise Error::MissingCredentials, 'Please set an endpoint to API' unless endpoint
83
+
84
+ self.class.default_params sudo: sudo
85
+ self.class.default_params.delete(:sudo) if sudo.nil?
86
+ end
87
+
88
+ private
89
+
90
+ # Returns an Authorization header hash
91
+ #
92
+ # @raise [Error::MissingCredentials] if private_token and auth_token are not set.
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
101
+ end
102
+
103
+ # Set HTTParty configuration
104
+ # @see https://github.com/jnunemaker/httparty
105
+ def httparty_config(options)
106
+ options.merge!(httparty) if httparty
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'gitlab'
4
+ require 'gitlab/help'
5
+ require 'gitlab/cli_helpers'
6
+ require 'gitlab/shell_history'
7
+ require 'readline'
8
+ require 'shellwords'
9
+
10
+ class Gitlab::Shell
11
+ extend Gitlab::CLI::Helpers
12
+
13
+ class << self
14
+ attr_reader :arguments, :command
15
+
16
+ def start
17
+ trap('INT') { quit_shell } # capture ctrl-c
18
+ setup
19
+
20
+ while (buffer = Readline.readline('gitlab> '))
21
+ begin
22
+ parse_input buffer
23
+
24
+ @arguments.map! { |arg| symbolize_keys(yaml_load(arg)) }
25
+
26
+ case buffer
27
+ when nil, ''
28
+ next
29
+ when 'exit'
30
+ quit_shell
31
+ when /^\bhelp\b+/
32
+ puts help(arguments[0]) { |out| out.gsub!(/Gitlab\./, 'gitlab> ') }
33
+ else
34
+ history << buffer
35
+
36
+ data = execute command, arguments
37
+ output_table command, arguments, data
38
+ end
39
+ rescue StandardError => e
40
+ puts e.message
41
+ end
42
+ end
43
+
44
+ quit_shell # save history if user presses ctrl-d
45
+ end
46
+
47
+ def parse_input(buffer)
48
+ buf = Shellwords.shellwords(buffer)
49
+
50
+ @command = buf.shift
51
+ @arguments = buf.count.positive? ? buf : []
52
+ end
53
+
54
+ def setup
55
+ history.load
56
+
57
+ Readline.completion_proc = completion
58
+ Readline.completion_append_character = ' '
59
+ end
60
+
61
+ # Gets called when user hits TAB key to do completion
62
+ def completion
63
+ proc { |str| actions.map(&:to_s).grep(/^#{Regexp.escape(str)}/) }
64
+ end
65
+
66
+ # Execute a given command with arguements
67
+ def execute(cmd = command, args = arguments)
68
+ raise "Unknown command: #{cmd}. See the 'help' for a list of valid commands." unless actions.include?(cmd.to_sym)
69
+
70
+ confirm_command(cmd)
71
+ gitlab_helper(cmd, args)
72
+ end
73
+
74
+ def quit_shell
75
+ history.save
76
+ exit
77
+ end
78
+
79
+ def history
80
+ @history ||= History.new
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Gitlab::Shell
4
+ class History
5
+ DEFAULT_HISTFILESIZE = 200
6
+ DEFAULT_FILE_PATH = File.join(Dir.home, '.gitlab_shell_history')
7
+
8
+ def initialize(options = {})
9
+ @file_path = options[:file_path] || DEFAULT_FILE_PATH
10
+ Readline::HISTORY.clear
11
+ end
12
+
13
+ def load
14
+ read_from_file { |line| Readline::HISTORY << line.chomp }
15
+ end
16
+
17
+ def save
18
+ lines.each { |line| history_file&.puts line }
19
+ end
20
+
21
+ def push(line)
22
+ Readline::HISTORY << line
23
+ end
24
+ alias << push
25
+
26
+ def lines
27
+ Readline::HISTORY.to_a.last(max_lines)
28
+ end
29
+
30
+ private
31
+
32
+ def history_file
33
+ @history_file ||= File.open(history_file_path, 'w', 0o600).tap do |file|
34
+ file.sync = true
35
+ end
36
+ rescue Errno::EACCES
37
+ warn 'History not saved; unable to open your history file for writing.'
38
+ @history_file = false
39
+ end
40
+
41
+ def history_file_path
42
+ File.expand_path(@file_path)
43
+ end
44
+
45
+ def read_from_file(&block)
46
+ path = history_file_path
47
+
48
+ File.foreach(path, &block) if File.exist?(path)
49
+ rescue StandardError => e
50
+ warn "History file not loaded: #{e.message}"
51
+ end
52
+
53
+ def max_lines
54
+ (ENV['GITLAB_HISTFILESIZE'] || DEFAULT_HISTFILESIZE).to_i
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Gitlab
4
+ VERSION = '4.18.1'
5
+ end
data/lib/gitlab.rb ADDED
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'gitlab/version'
4
+ require 'gitlab/objectified_hash'
5
+ require 'gitlab/configuration'
6
+ require 'gitlab/error'
7
+ require 'gitlab/page_links'
8
+ require 'gitlab/paginated_response'
9
+ require 'gitlab/file_response'
10
+ require 'gitlab/request'
11
+ require 'gitlab/api'
12
+ require 'gitlab/client'
13
+
14
+ module Gitlab
15
+ extend Configuration
16
+
17
+ # Alias for Gitlab::Client.new
18
+ #
19
+ # @return [Gitlab::Client]
20
+ def self.client(options = {})
21
+ Gitlab::Client.new(options)
22
+ end
23
+
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
36
+ end
37
+
38
+ # Delegate to Gitlab::Client
39
+ def self.respond_to_missing?(method_name, include_private = false)
40
+ client.respond_to?(method_name) || super
41
+ end
42
+
43
+ # Delegate to HTTParty.http_proxy
44
+ def self.http_proxy(address = nil, port = nil, username = nil, password = nil)
45
+ Gitlab::Request.http_proxy(address, port, username, password)
46
+ end
47
+
48
+ # Returns an unsorted array of available client methods.
49
+ #
50
+ # @return [Array<Symbol>]
51
+ def self.actions
52
+ hidden =
53
+ /endpoint|private_token|auth_token|user_agent|sudo|get|post|put|\Adelete\z|validate\z|request_defaults|httparty/
54
+ (Gitlab::Client.instance_methods - Object.methods).reject { |e| e[hidden] }
55
+ end
56
+ end
metadata ADDED
@@ -0,0 +1,204 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fs-gitlab
3
+ version: !ruby/object:Gem::Version
4
+ version: 4.18.1
5
+ platform: ruby
6
+ authors:
7
+ - Nihad Abbasov
8
+ - Sean Edge
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2022-06-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: httparty
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '0.20'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '0.20'
28
+ - !ruby/object:Gem::Dependency
29
+ name: terminal-table
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 1.5.1
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 1.5.1
42
+ - !ruby/object:Gem::Dependency
43
+ name: rake
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rspec
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: webmock
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ description: Ruby client and CLI for GitLab API
85
+ email:
86
+ - nihad@42na.in
87
+ - asedge@gmail.com
88
+ executables:
89
+ - gitlab
90
+ extensions: []
91
+ extra_rdoc_files: []
92
+ files:
93
+ - CHANGELOG.md
94
+ - LICENSE.txt
95
+ - README.md
96
+ - exe/gitlab
97
+ - lib/gitlab.rb
98
+ - lib/gitlab/api.rb
99
+ - lib/gitlab/cli.rb
100
+ - lib/gitlab/cli_helpers.rb
101
+ - lib/gitlab/client.rb
102
+ - lib/gitlab/client/access_requests.rb
103
+ - lib/gitlab/client/application_settings.rb
104
+ - lib/gitlab/client/avatar.rb
105
+ - lib/gitlab/client/award_emojis.rb
106
+ - lib/gitlab/client/boards.rb
107
+ - lib/gitlab/client/branches.rb
108
+ - lib/gitlab/client/broadcast_messages.rb
109
+ - lib/gitlab/client/build_variables.rb
110
+ - lib/gitlab/client/builds.rb
111
+ - lib/gitlab/client/commits.rb
112
+ - lib/gitlab/client/container_registry.rb
113
+ - lib/gitlab/client/deployments.rb
114
+ - lib/gitlab/client/environments.rb
115
+ - lib/gitlab/client/epic_issues.rb
116
+ - lib/gitlab/client/epics.rb
117
+ - lib/gitlab/client/events.rb
118
+ - lib/gitlab/client/features.rb
119
+ - lib/gitlab/client/group_badges.rb
120
+ - lib/gitlab/client/group_boards.rb
121
+ - lib/gitlab/client/group_labels.rb
122
+ - lib/gitlab/client/group_milestones.rb
123
+ - lib/gitlab/client/groups.rb
124
+ - lib/gitlab/client/issue_links.rb
125
+ - lib/gitlab/client/issues.rb
126
+ - lib/gitlab/client/jobs.rb
127
+ - lib/gitlab/client/keys.rb
128
+ - lib/gitlab/client/labels.rb
129
+ - lib/gitlab/client/lint.rb
130
+ - lib/gitlab/client/markdown.rb
131
+ - lib/gitlab/client/merge_request_approvals.rb
132
+ - lib/gitlab/client/merge_requests.rb
133
+ - lib/gitlab/client/milestones.rb
134
+ - lib/gitlab/client/namespaces.rb
135
+ - lib/gitlab/client/notes.rb
136
+ - lib/gitlab/client/packages.rb
137
+ - lib/gitlab/client/pipeline_schedules.rb
138
+ - lib/gitlab/client/pipeline_triggers.rb
139
+ - lib/gitlab/client/pipelines.rb
140
+ - lib/gitlab/client/project_badges.rb
141
+ - lib/gitlab/client/project_clusters.rb
142
+ - lib/gitlab/client/project_release_links.rb
143
+ - lib/gitlab/client/project_releases.rb
144
+ - lib/gitlab/client/projects.rb
145
+ - lib/gitlab/client/protected_tags.rb
146
+ - lib/gitlab/client/remote_mirrors.rb
147
+ - lib/gitlab/client/repositories.rb
148
+ - lib/gitlab/client/repository_files.rb
149
+ - lib/gitlab/client/repository_submodules.rb
150
+ - lib/gitlab/client/resource_label_events.rb
151
+ - lib/gitlab/client/resource_state_events.rb
152
+ - lib/gitlab/client/runners.rb
153
+ - lib/gitlab/client/search.rb
154
+ - lib/gitlab/client/services.rb
155
+ - lib/gitlab/client/sidekiq.rb
156
+ - lib/gitlab/client/snippets.rb
157
+ - lib/gitlab/client/system_hooks.rb
158
+ - lib/gitlab/client/tags.rb
159
+ - lib/gitlab/client/templates.rb
160
+ - lib/gitlab/client/todos.rb
161
+ - lib/gitlab/client/user_snippets.rb
162
+ - lib/gitlab/client/users.rb
163
+ - lib/gitlab/client/versions.rb
164
+ - lib/gitlab/client/wikis.rb
165
+ - lib/gitlab/configuration.rb
166
+ - lib/gitlab/error.rb
167
+ - lib/gitlab/file_response.rb
168
+ - lib/gitlab/help.rb
169
+ - lib/gitlab/objectified_hash.rb
170
+ - lib/gitlab/page_links.rb
171
+ - lib/gitlab/paginated_response.rb
172
+ - lib/gitlab/request.rb
173
+ - lib/gitlab/shell.rb
174
+ - lib/gitlab/shell_history.rb
175
+ - lib/gitlab/version.rb
176
+ homepage: https://github.com/NARKOZ/gitlab
177
+ licenses:
178
+ - BSD-2-Clause
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
185
+ post_install_message:
186
+ rdoc_options: []
187
+ require_paths:
188
+ - lib
189
+ required_ruby_version: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '2.6'
194
+ required_rubygems_version: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ requirements: []
200
+ rubygems_version: 3.1.6
201
+ signing_key:
202
+ specification_version: 4
203
+ summary: A Ruby wrapper and CLI for the GitLab API
204
+ test_files: []