fs-gitlab 4.18.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +270 -0
- data/LICENSE.txt +24 -0
- data/README.md +260 -0
- data/exe/gitlab +11 -0
- data/lib/gitlab/api.rb +24 -0
- data/lib/gitlab/cli.rb +89 -0
- data/lib/gitlab/cli_helpers.rb +243 -0
- data/lib/gitlab/client/access_requests.rb +103 -0
- data/lib/gitlab/client/application_settings.rb +172 -0
- data/lib/gitlab/client/avatar.rb +21 -0
- data/lib/gitlab/client/award_emojis.rb +137 -0
- data/lib/gitlab/client/boards.rb +146 -0
- data/lib/gitlab/client/branches.rb +135 -0
- data/lib/gitlab/client/broadcast_messages.rb +75 -0
- data/lib/gitlab/client/build_variables.rb +135 -0
- data/lib/gitlab/client/builds.rb +108 -0
- data/lib/gitlab/client/commits.rb +216 -0
- data/lib/gitlab/client/container_registry.rb +85 -0
- data/lib/gitlab/client/deployments.rb +34 -0
- data/lib/gitlab/client/environments.rb +89 -0
- data/lib/gitlab/client/epic_issues.rb +23 -0
- data/lib/gitlab/client/epics.rb +73 -0
- data/lib/gitlab/client/events.rb +60 -0
- data/lib/gitlab/client/features.rb +48 -0
- data/lib/gitlab/client/group_badges.rb +88 -0
- data/lib/gitlab/client/group_boards.rb +141 -0
- data/lib/gitlab/client/group_labels.rb +88 -0
- data/lib/gitlab/client/group_milestones.rb +94 -0
- data/lib/gitlab/client/groups.rb +358 -0
- data/lib/gitlab/client/issue_links.rb +48 -0
- data/lib/gitlab/client/issues.rb +231 -0
- data/lib/gitlab/client/jobs.rb +250 -0
- data/lib/gitlab/client/keys.rb +29 -0
- data/lib/gitlab/client/labels.rb +88 -0
- data/lib/gitlab/client/lint.rb +19 -0
- data/lib/gitlab/client/markdown.rb +23 -0
- data/lib/gitlab/client/merge_request_approvals.rb +265 -0
- data/lib/gitlab/client/merge_requests.rb +386 -0
- data/lib/gitlab/client/milestones.rb +106 -0
- data/lib/gitlab/client/namespaces.rb +22 -0
- data/lib/gitlab/client/notes.rb +313 -0
- data/lib/gitlab/client/packages.rb +95 -0
- data/lib/gitlab/client/pipeline_schedules.rb +147 -0
- data/lib/gitlab/client/pipeline_triggers.rb +103 -0
- data/lib/gitlab/client/pipelines.rb +105 -0
- data/lib/gitlab/client/project_badges.rb +85 -0
- data/lib/gitlab/client/project_clusters.rb +83 -0
- data/lib/gitlab/client/project_release_links.rb +76 -0
- data/lib/gitlab/client/project_releases.rb +79 -0
- data/lib/gitlab/client/projects.rb +708 -0
- data/lib/gitlab/client/protected_tags.rb +59 -0
- data/lib/gitlab/client/remote_mirrors.rb +51 -0
- data/lib/gitlab/client/repositories.rb +113 -0
- data/lib/gitlab/client/repository_files.rb +131 -0
- data/lib/gitlab/client/repository_submodules.rb +27 -0
- data/lib/gitlab/client/resource_label_events.rb +82 -0
- data/lib/gitlab/client/resource_state_events.rb +57 -0
- data/lib/gitlab/client/runners.rb +211 -0
- data/lib/gitlab/client/search.rb +66 -0
- data/lib/gitlab/client/services.rb +53 -0
- data/lib/gitlab/client/sidekiq.rb +39 -0
- data/lib/gitlab/client/snippets.rb +95 -0
- data/lib/gitlab/client/system_hooks.rb +64 -0
- data/lib/gitlab/client/tags.rb +97 -0
- data/lib/gitlab/client/templates.rb +100 -0
- data/lib/gitlab/client/todos.rb +46 -0
- data/lib/gitlab/client/user_snippets.rb +114 -0
- data/lib/gitlab/client/users.rb +397 -0
- data/lib/gitlab/client/versions.rb +18 -0
- data/lib/gitlab/client/wikis.rb +79 -0
- data/lib/gitlab/client.rb +95 -0
- data/lib/gitlab/configuration.rb +57 -0
- data/lib/gitlab/error.rb +170 -0
- data/lib/gitlab/file_response.rb +48 -0
- data/lib/gitlab/help.rb +94 -0
- data/lib/gitlab/objectified_hash.rb +51 -0
- data/lib/gitlab/page_links.rb +35 -0
- data/lib/gitlab/paginated_response.rb +110 -0
- data/lib/gitlab/request.rb +109 -0
- data/lib/gitlab/shell.rb +83 -0
- data/lib/gitlab/shell_history.rb +57 -0
- data/lib/gitlab/version.rb +5 -0
- data/lib/gitlab.rb +56 -0
- 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
|
data/lib/gitlab/shell.rb
ADDED
@@ -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
|
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: []
|