labclient 0.1.0 → 0.1.5
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/lib/labclient.rb +65 -42
- data/lib/labclient/branches/branch.rb +25 -0
- data/lib/labclient/branches/create.rb +33 -0
- data/lib/labclient/client.rb +45 -5
- data/lib/labclient/common.rb +5 -0
- data/lib/labclient/docs.rb +5 -1
- data/lib/labclient/epics/epic.rb +13 -0
- data/lib/labclient/error.rb +1 -0
- data/lib/labclient/files/create.rb +14 -8
- data/lib/labclient/generator/generator.rb +70 -0
- data/lib/labclient/generator/names.rb +68 -0
- data/lib/labclient/generator/template_helper.rb +82 -0
- data/lib/labclient/generator/templates/environments.rb +98 -0
- data/lib/labclient/generator/templates/pages.rb +67 -0
- data/lib/labclient/generator/templates/pipeline_trigger.rb +82 -0
- data/lib/labclient/generator/wizard.rb +142 -0
- data/lib/labclient/groups/group.rb +17 -0
- data/lib/labclient/groups/stub.rb +8 -0
- data/lib/labclient/http.rb +8 -3
- data/lib/labclient/issues/agent_detail.rb +1 -1
- data/lib/labclient/issues/closed_by.rb +1 -1
- data/lib/labclient/issues/create.rb +17 -5
- data/lib/labclient/issues/delete.rb +1 -1
- data/lib/labclient/issues/issue.rb +21 -1
- data/lib/labclient/issues/move.rb +1 -1
- data/lib/labclient/issues/participants.rb +1 -1
- data/lib/labclient/issues/related_merge_requests.rb +1 -1
- data/lib/labclient/issues/show.rb +1 -1
- data/lib/labclient/issues/subscribe.rb +1 -1
- data/lib/labclient/issues/time_stats.rb +5 -5
- data/lib/labclient/issues/todo.rb +1 -1
- data/lib/labclient/issues/unsubscribe.rb +1 -1
- data/lib/labclient/issues/update.rb +1 -1
- data/lib/labclient/klass.rb +35 -3
- data/lib/labclient/lab_struct.rb +17 -0
- data/lib/labclient/license/list.rb +2 -2
- data/lib/labclient/members/member.rb +1 -0
- data/lib/labclient/merge_requests/accept.rb +16 -7
- data/lib/labclient/merge_requests/cancel_auto_merge.rb +1 -1
- data/lib/labclient/merge_requests/changes.rb +1 -1
- data/lib/labclient/merge_requests/closes_issues.rb +1 -1
- data/lib/labclient/merge_requests/commits.rb +1 -1
- data/lib/labclient/merge_requests/create.rb +12 -0
- data/lib/labclient/merge_requests/delete.rb +1 -1
- data/lib/labclient/merge_requests/diff_versions.rb +1 -1
- data/lib/labclient/merge_requests/merge_request.rb +49 -4
- data/lib/labclient/merge_requests/participants.rb +1 -1
- data/lib/labclient/merge_requests/pipelines.rb +2 -2
- data/lib/labclient/merge_requests/rebase.rb +1 -1
- data/lib/labclient/merge_requests/show.rb +1 -1
- data/lib/labclient/merge_requests/subscribe.rb +1 -1
- data/lib/labclient/merge_requests/time_stats.rb +5 -5
- data/lib/labclient/merge_requests/todo.rb +1 -1
- data/lib/labclient/merge_requests/unsubscribe.rb +1 -1
- data/lib/labclient/merge_requests/update.rb +1 -1
- data/lib/labclient/notes/epics/create.rb +12 -4
- data/lib/labclient/notes/epics/delete.rb +3 -3
- data/lib/labclient/notes/epics/list.rb +21 -4
- data/lib/labclient/notes/epics/show.rb +4 -4
- data/lib/labclient/notes/epics/update.rb +4 -4
- data/lib/labclient/notes/issues/create.rb +11 -1
- data/lib/labclient/notes/issues/list.rb +18 -3
- data/lib/labclient/notes/issues/show.rb +1 -1
- data/lib/labclient/notes/merge_requests/create.rb +8 -0
- data/lib/labclient/notes/merge_requests/list.rb +20 -2
- data/lib/labclient/notes/snippets/create.rb +1 -1
- data/lib/labclient/notes/snippets/list.rb +20 -3
- data/lib/labclient/notes/snippets/show.rb +1 -1
- data/lib/labclient/notifications/update.rb +1 -1
- data/lib/labclient/overview.rb +117 -16
- data/lib/labclient/paginated_response.rb +6 -1
- data/lib/labclient/pipelines/pipeline.rb +41 -0
- data/lib/labclient/projects/access_requests/access_request.rb +0 -1
- data/lib/labclient/projects/badges/project_badge.rb +0 -1
- data/lib/labclient/projects/clusters/project_cluster.rb +0 -1
- data/lib/labclient/projects/create.rb +13 -0
- data/lib/labclient/projects/deployments/project_deployment.rb +1 -3
- data/lib/labclient/projects/environments/project_environment.rb +0 -1
- data/lib/labclient/projects/forks/existing.rb +0 -2
- data/lib/labclient/projects/forks/fork.rb +1 -1
- data/lib/labclient/projects/forks/list.rb +0 -1
- data/lib/labclient/projects/forks/remove.rb +0 -1
- data/lib/labclient/projects/hooks/project_hook.rb +0 -1
- data/lib/labclient/projects/labels/project_label.rb +0 -1
- data/lib/labclient/projects/methods.rb +76 -2
- data/lib/labclient/projects/mirrors/project_mirror.rb +0 -1
- data/lib/labclient/projects/reference.rb +17 -0
- data/lib/labclient/projects/release_links/project_release_link.rb +0 -1
- data/lib/labclient/projects/releases/project_release.rb +0 -1
- data/lib/labclient/projects/services/project_service.rb +0 -1
- data/lib/labclient/projects/snippets/project_snippet.rb +12 -0
- data/lib/labclient/projects/stars/star.rb +0 -2
- data/lib/labclient/projects/stars/starred_projects.rb +0 -2
- data/lib/labclient/projects/stars/starrers.rb +1 -1
- data/lib/labclient/projects/triggers/project_trigger.rb +0 -1
- data/lib/labclient/projects/variables/project_variable.rb +0 -1
- data/lib/labclient/protected_branches/protect.rb +6 -5
- data/lib/labclient/protected_environments/list.rb +29 -0
- data/lib/labclient/protected_environments/protect.rb +53 -0
- data/lib/labclient/protected_environments/protected_environment.rb +22 -0
- data/lib/labclient/protected_environments/show.rb +24 -0
- data/lib/labclient/protected_environments/unprotect.rb +31 -0
- data/lib/labclient/snippets/snippet.rb +2 -2
- data/lib/labclient/users/membership.rb +62 -0
- data/lib/labclient/users/memberships.rb +8 -3
- data/lib/labclient/users/user.rb +13 -1
- data/lib/labclient/version.rb +1 -1
- metadata +38 -9
- data/lib/labclient/open_struct.rb +0 -14
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
module LabClient
|
|
2
|
+
# Generator Namespace
|
|
3
|
+
module Generator
|
|
4
|
+
# Helper to Generate Data / Populate GitLab
|
|
5
|
+
class Wizard
|
|
6
|
+
include Generator::Names # Name Generator
|
|
7
|
+
attr_reader :client
|
|
8
|
+
attr_accessor :count, :random, :password, :templates, :domain, :skip_confirmation
|
|
9
|
+
|
|
10
|
+
def inspect
|
|
11
|
+
"#<Wizard count=#{count}, random=#{random}, domain=#{domain}> templates=#{templates}"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def templates_default
|
|
15
|
+
%i[pages pipeline_trigger environments]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def templates_all
|
|
19
|
+
LabClient::Generator::TemplateHelper.descendants
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def initialize(client)
|
|
23
|
+
require 'faker' # Ensure Faker is Available
|
|
24
|
+
|
|
25
|
+
@client = client
|
|
26
|
+
self.random = true # Populate Random or use only Templates
|
|
27
|
+
self.count = default_count
|
|
28
|
+
self.password = SecureRandom.uuid
|
|
29
|
+
puts "Default Password: #{password}"
|
|
30
|
+
|
|
31
|
+
self.skip_confirmation = true
|
|
32
|
+
self.domain = URI.parse(client.settings[:url]).hostname
|
|
33
|
+
|
|
34
|
+
# Default Templates
|
|
35
|
+
self.templates ||= templates_default
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def template(name, opts = {})
|
|
39
|
+
template_klass = templates_all.find { |x| x.template_name == name.to_sym }
|
|
40
|
+
|
|
41
|
+
raise "Invalid Template! Available Templates: #{templates_all.map(&:template_name).join(', ')}" unless template_klass
|
|
42
|
+
|
|
43
|
+
template_klass.new(client, opts)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Random Counters
|
|
47
|
+
def default_count
|
|
48
|
+
{
|
|
49
|
+
users: 20,
|
|
50
|
+
projects: 5,
|
|
51
|
+
groups: 5,
|
|
52
|
+
issues: 2
|
|
53
|
+
}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def generate_users
|
|
57
|
+
puts 'Generating Users'
|
|
58
|
+
@users = @user_names.map do |name|
|
|
59
|
+
username = name.downcase.gsub(/[^0-9A-Za-z]/, '')
|
|
60
|
+
email = "#{username}@#{domain}"
|
|
61
|
+
puts "User -- Name: #{name}, UserName: #{username}, Email: #{email}"
|
|
62
|
+
|
|
63
|
+
client.users.create(
|
|
64
|
+
name: name,
|
|
65
|
+
email: email,
|
|
66
|
+
password: password,
|
|
67
|
+
username: username,
|
|
68
|
+
skip_confirmation: skip_confirmation
|
|
69
|
+
)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def generate_groups
|
|
74
|
+
puts 'Generating Groups'
|
|
75
|
+
@groups = @group_names.map do |name|
|
|
76
|
+
path = name.downcase.gsub(/[^0-9A-Za-z]/, '')
|
|
77
|
+
puts "Group -- #{name}/#{path}"
|
|
78
|
+
client.groups.create(name: name, path: path)
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def generate_group_membership
|
|
83
|
+
puts 'Adding Group members'
|
|
84
|
+
## Group Access Level
|
|
85
|
+
@groups.each do |group|
|
|
86
|
+
@users.sample(rand(1..@users.count)).each do |user|
|
|
87
|
+
level = group.valid_group_project_levels.sample
|
|
88
|
+
puts "Group Add: #{group.name}: #{user.name} - #{level}"
|
|
89
|
+
group.member_add(user, access_level: level)
|
|
90
|
+
# :nocov:
|
|
91
|
+
rescue StandardError => e
|
|
92
|
+
puts e.message
|
|
93
|
+
next
|
|
94
|
+
# :nocov:
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def generate_projects(group)
|
|
100
|
+
puts 'Generating Projects'
|
|
101
|
+
# Collect Group Members
|
|
102
|
+
members = group.members
|
|
103
|
+
|
|
104
|
+
# Loop through project names, create project add issues
|
|
105
|
+
@project_names.uniq.map do |project_name|
|
|
106
|
+
puts "Project: #{project_name}"
|
|
107
|
+
project = group.project_create(name: project_name, description: gen_description)
|
|
108
|
+
|
|
109
|
+
rand(count[:issues]).times do
|
|
110
|
+
project.issue_create(generate_issue_data(members.sample))
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def generate_issue_data(member)
|
|
116
|
+
{
|
|
117
|
+
assignee_id: member.id,
|
|
118
|
+
description: Faker::Hacker.say_something_smart,
|
|
119
|
+
title: Faker::Company.catch_phrase
|
|
120
|
+
}
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# Execute Generation
|
|
124
|
+
def run!
|
|
125
|
+
# Collect Names
|
|
126
|
+
generate_names
|
|
127
|
+
generate_users
|
|
128
|
+
generate_groups
|
|
129
|
+
generate_group_membership
|
|
130
|
+
|
|
131
|
+
@groups.map do |group|
|
|
132
|
+
generate_projects(group)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# Run Templates
|
|
136
|
+
templates.each { |template_klass| template(template_klass).run! }
|
|
137
|
+
|
|
138
|
+
nil
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
end
|
|
@@ -49,10 +49,17 @@ module LabClient
|
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
+
def project_create(query)
|
|
53
|
+
query[:namespace_id] = id
|
|
54
|
+
client.projects.create(query)
|
|
55
|
+
end
|
|
56
|
+
|
|
52
57
|
def ldap_list
|
|
53
58
|
client.groups.ldap.list(id)
|
|
54
59
|
end
|
|
55
60
|
|
|
61
|
+
alias ldap_links ldap_list
|
|
62
|
+
|
|
56
63
|
def ldap_sync
|
|
57
64
|
client.groups.ldap.sync(id)
|
|
58
65
|
end
|
|
@@ -239,6 +246,11 @@ module LabClient
|
|
|
239
246
|
client.groups.milestones.list(id, query)
|
|
240
247
|
end
|
|
241
248
|
|
|
249
|
+
# Reload Helper
|
|
250
|
+
def reload
|
|
251
|
+
update_self client.groups.show(id)
|
|
252
|
+
end
|
|
253
|
+
|
|
242
254
|
# rubocop:disable Metrics/BlockLength
|
|
243
255
|
help do
|
|
244
256
|
subtitle 'Group'
|
|
@@ -247,12 +259,14 @@ module LabClient
|
|
|
247
259
|
option 'audit_events', "List this group's AuditEvents"
|
|
248
260
|
option 'audit_event', 'Show a specific AuditEvents [Audit Event ID]'
|
|
249
261
|
option 'projects', 'List direct Projects [Hash]'
|
|
262
|
+
option 'project_create', 'Create a project in this Group [Hash]'
|
|
250
263
|
option 'details', 'Get all details [Hash]'
|
|
251
264
|
option 'search', 'Search by scope within group [scope, search_string]'
|
|
252
265
|
option 'delete', 'Delete this Group'
|
|
253
266
|
option 'restore', 'Restore if marked for deletion'
|
|
254
267
|
option 'transfer', 'Transfer project to this group [Project ID]'
|
|
255
268
|
option 'ldap_list', 'Lists LDAP group links'
|
|
269
|
+
option 'ldap_links', 'Alias for ldap_list'
|
|
256
270
|
option 'ldap_sync', 'Syncs the group with its linked LDAP group'
|
|
257
271
|
option 'ldap_create', 'Adds an LDAP group link. [Hash]'
|
|
258
272
|
option 'ldap_delete', 'Deletes an LDAP group link. [CN, Provider(optional)]'
|
|
@@ -310,6 +324,9 @@ module LabClient
|
|
|
310
324
|
|
|
311
325
|
# Registry
|
|
312
326
|
option 'registry_repositories', 'Get a list of registry repositories [Hash]'
|
|
327
|
+
|
|
328
|
+
# Reload Helper
|
|
329
|
+
option 'reload', 'Reload this object (New API Call)'
|
|
313
330
|
end
|
|
314
331
|
# rubocop:enable Metrics/BlockLength
|
|
315
332
|
end
|
data/lib/labclient/http.rb
CHANGED
|
@@ -3,6 +3,7 @@ module LabClient
|
|
|
3
3
|
# Request Helper
|
|
4
4
|
class HTTP
|
|
5
5
|
attr_accessor :settings
|
|
6
|
+
|
|
6
7
|
def initialize(settings)
|
|
7
8
|
self.settings = settings
|
|
8
9
|
end
|
|
@@ -72,15 +73,19 @@ module Typhoeus
|
|
|
72
73
|
def process_body
|
|
73
74
|
if body.empty?
|
|
74
75
|
nil
|
|
75
|
-
elsif headers['content-type']
|
|
76
|
+
elsif headers['content-type']&.include? 'text/plain'
|
|
76
77
|
body
|
|
77
78
|
else
|
|
78
|
-
Oj.load(body, mode: :compat, object_class:
|
|
79
|
+
Oj.load(body, mode: :compat, object_class: LabClient::LabStruct)
|
|
79
80
|
end
|
|
80
81
|
end
|
|
81
82
|
|
|
82
83
|
def friendly_error
|
|
83
|
-
message =
|
|
84
|
+
message = if data
|
|
85
|
+
data[:message] || data[:error] || data
|
|
86
|
+
else
|
|
87
|
+
return_message
|
|
88
|
+
end
|
|
84
89
|
"#{code} - #{message}"
|
|
85
90
|
end
|
|
86
91
|
end
|
|
@@ -4,7 +4,7 @@ module LabClient
|
|
|
4
4
|
class Issues < Common
|
|
5
5
|
doc 'Show' do
|
|
6
6
|
title 'Agent Detail'
|
|
7
|
-
desc 'Get user agent details [
|
|
7
|
+
desc 'Get user agent details [Project ID, Issue IID]'
|
|
8
8
|
example 'client.issues.agent_detail(30, 1)'
|
|
9
9
|
result <<~DOC
|
|
10
10
|
=> {:user_agent=>"Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0", :ip_address=>"10.0.0.14", :akismet_submitted=>false}
|
|
@@ -4,7 +4,7 @@ module LabClient
|
|
|
4
4
|
class Issues < Common
|
|
5
5
|
doc 'Show' do
|
|
6
6
|
subtitle 'Closed By'
|
|
7
|
-
desc 'Get all the merge requests that will close issue when merged. [
|
|
7
|
+
desc 'Get all the merge requests that will close issue when merged. [Project ID, Issue IID]'
|
|
8
8
|
example 'client.issues.closed_by(5, 1)'
|
|
9
9
|
result <<~DOC
|
|
10
10
|
=> [#<MergeRequest id: 5, title: Update README.md, state: opened>]
|
|
@@ -3,7 +3,7 @@ module LabClient
|
|
|
3
3
|
# Specifics
|
|
4
4
|
class Issues < Common
|
|
5
5
|
doc 'Create' do
|
|
6
|
-
desc 'Creates a new project issue. [
|
|
6
|
+
desc 'Creates a new project issue. [Project ID]'
|
|
7
7
|
example 'client.issues.create(5, title: "Fancy!")'
|
|
8
8
|
result <<~DOC
|
|
9
9
|
=> #<Issue id: 1, title: Fancy!, state: opened>
|
|
@@ -14,15 +14,27 @@ module LabClient
|
|
|
14
14
|
markdown <<~DOC
|
|
15
15
|
See [API docs here](https://docs.gitlab.com/ee/api/issues.html#new-issue) for full list of attributes
|
|
16
16
|
|
|
17
|
-
| Attribute
|
|
18
|
-
|
|
19
|
-
| title
|
|
20
|
-
| description
|
|
17
|
+
| Attribute | Type | Required | Description |
|
|
18
|
+
|-------------|----------------|----------|--------------|
|
|
19
|
+
| title | string | yes | The title of an issue |
|
|
20
|
+
| description | string | no | The description of an issue. Limited to 1,048,576 characters. |
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
DOC
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
doc 'Create' do
|
|
27
|
+
desc 'Via Project [Hash]'
|
|
28
|
+
example <<~DOC
|
|
29
|
+
project = client.projects.show(16)
|
|
30
|
+
project.issue_create(title: "Fancy!")
|
|
21
31
|
DOC
|
|
22
32
|
end
|
|
23
33
|
|
|
24
34
|
def create(project_id, query = {})
|
|
25
35
|
project_id = format_id(project_id)
|
|
36
|
+
format_query_id(:assignee_id, query)
|
|
37
|
+
|
|
26
38
|
client.request(:post, "projects/#{project_id}/issues", Issue, query)
|
|
27
39
|
end
|
|
28
40
|
end
|
|
@@ -3,7 +3,7 @@ module LabClient
|
|
|
3
3
|
# Specifics
|
|
4
4
|
class Issues < Common
|
|
5
5
|
doc 'Delete' do
|
|
6
|
-
desc 'Updates an existing project issue. This call is also used to mark an issue as closed. [
|
|
6
|
+
desc 'Updates an existing project issue. This call is also used to mark an issue as closed. [Project ID, Issue IID]'
|
|
7
7
|
example 'client.issues.delete(5, 1)'
|
|
8
8
|
result <<~DOC
|
|
9
9
|
=> #<Issue id: 1, title: Moar Fancy!, state: opened>
|
|
@@ -66,6 +66,10 @@ module LabClient
|
|
|
66
66
|
client.notes.issues.list(project_id, iid)
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
+
def note_create(query)
|
|
70
|
+
client.notes.issues.create(project_id, iid, query)
|
|
71
|
+
end
|
|
72
|
+
|
|
69
73
|
def agent_detail
|
|
70
74
|
client.issues.agent_detail(project_id, iid)
|
|
71
75
|
end
|
|
@@ -87,6 +91,18 @@ module LabClient
|
|
|
87
91
|
client.resource_labels.issues.show(project_id, iid, resource_event_id)
|
|
88
92
|
end
|
|
89
93
|
|
|
94
|
+
# Reload Helper
|
|
95
|
+
def reload
|
|
96
|
+
update_self client.issues.show(project_id, iid)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def project
|
|
100
|
+
# If from List Project ID isn't stored
|
|
101
|
+
project_id = collect_project_id if project_id.nil?
|
|
102
|
+
|
|
103
|
+
client.projects.show(project_id)
|
|
104
|
+
end
|
|
105
|
+
|
|
90
106
|
help do
|
|
91
107
|
subtitle 'Issue'
|
|
92
108
|
option 'update', 'Update issue (accepts hash).'
|
|
@@ -95,7 +111,8 @@ module LabClient
|
|
|
95
111
|
option 'subscribe', 'Subscribe to notifications'
|
|
96
112
|
option 'unsubscribe', 'Unsubscribe to notifications'
|
|
97
113
|
option 'participants', 'List participants in this issue.'
|
|
98
|
-
option 'notes', 'List notes/comments.'
|
|
114
|
+
option 'notes', 'List notes/comments. [Hash]'
|
|
115
|
+
option 'note_create', 'Creates a new note for issue. [Hash]'
|
|
99
116
|
option 'agent_detail', 'Get user agent details.'
|
|
100
117
|
option 'related_merge_requests', 'Get all related Merge Requests.'
|
|
101
118
|
option 'closed_by', 'Get all Merge Requests that will close this issue.'
|
|
@@ -109,6 +126,9 @@ module LabClient
|
|
|
109
126
|
# Resource Labels
|
|
110
127
|
option 'resource_labels', 'List of all label events'
|
|
111
128
|
option 'resource_label', 'Show single label event [Resource Event ID]'
|
|
129
|
+
|
|
130
|
+
# Reload Helper
|
|
131
|
+
option 'reload', 'Reload this object (New API Call)'
|
|
112
132
|
end
|
|
113
133
|
end
|
|
114
134
|
end
|
|
@@ -3,7 +3,7 @@ module LabClient
|
|
|
3
3
|
# Specifics
|
|
4
4
|
class Issues < Common
|
|
5
5
|
doc 'Move' do
|
|
6
|
-
desc 'Moves an issue to a different project. [
|
|
6
|
+
desc 'Moves an issue to a different project. [Project ID, issue iid, target project id]'
|
|
7
7
|
example 'client.issues.move(5, 1, 6)'
|
|
8
8
|
result <<~DOC
|
|
9
9
|
=> #<Issue id: 1, title: Moar Fancy!, state: opened>
|
|
@@ -4,7 +4,7 @@ module LabClient
|
|
|
4
4
|
class Issues < Common
|
|
5
5
|
doc 'Show' do
|
|
6
6
|
title 'Participants'
|
|
7
|
-
desc 'Get a list of issue participants. [
|
|
7
|
+
desc 'Get a list of issue participants. [Project ID, Issue IID]'
|
|
8
8
|
example 'client.issues.participants(30,1)'
|
|
9
9
|
result <<~DOC
|
|
10
10
|
=> [#<User id: 1, username: braum>, #<User id: 52, username: anivia>]
|
|
@@ -5,7 +5,7 @@ module LabClient
|
|
|
5
5
|
doc 'Show' do
|
|
6
6
|
title 'Merge Requests'
|
|
7
7
|
subtitle 'Related'
|
|
8
|
-
desc 'Get all the merge requests that are related to the issue. [
|
|
8
|
+
desc 'Get all the merge requests that are related to the issue. [Project ID, Issue IID]'
|
|
9
9
|
example 'client.issues.related_merge_requests(5, 1)'
|
|
10
10
|
result <<~DOC
|
|
11
11
|
=> [#<MergeRequest id: 5, title: Update README.md, state: opened>]
|
|
@@ -3,7 +3,7 @@ module LabClient
|
|
|
3
3
|
# Specifics
|
|
4
4
|
class Issues < Common
|
|
5
5
|
doc 'Show' do
|
|
6
|
-
desc 'Get a single project issue. [project,
|
|
6
|
+
desc 'Get a single project issue. [project, Issue IID]'
|
|
7
7
|
example 'client.issues.show(343, 1)'
|
|
8
8
|
result <<~DOC
|
|
9
9
|
=> #<Issue id: 1, title: Front-line global approach, state: opened>
|
|
@@ -4,7 +4,7 @@ module LabClient
|
|
|
4
4
|
class Issues < Common
|
|
5
5
|
doc 'Update' do
|
|
6
6
|
title 'Subscribe'
|
|
7
|
-
desc 'Subscribes the authenticated user to an issue to receive notifications. [
|
|
7
|
+
desc 'Subscribes the authenticated user to an issue to receive notifications. [Project ID, Issue IID]'
|
|
8
8
|
|
|
9
9
|
example 'client.issues.subscribe(343, 7)'
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@ module LabClient
|
|
|
4
4
|
class Issues < Common
|
|
5
5
|
doc 'Time Stats' do
|
|
6
6
|
title 'Show'
|
|
7
|
-
desc 'Get time tracking stats. [
|
|
7
|
+
desc 'Get time tracking stats. [Project ID, Issue IID]'
|
|
8
8
|
example 'client.issues.time_stats(30, 1)'
|
|
9
9
|
result <<~DOC
|
|
10
10
|
=> {:time_estimate=>0, :total_time_spent=>0, :human_time_estimate=>nil, :human_total_time_spent=>nil}
|
|
@@ -28,7 +28,7 @@ module LabClient
|
|
|
28
28
|
|
|
29
29
|
doc 'Time Stats' do
|
|
30
30
|
title 'Add'
|
|
31
|
-
desc 'Adds spent time for this merge request. [
|
|
31
|
+
desc 'Adds spent time for this merge request. [Project ID, issue iid, duration]'
|
|
32
32
|
markdown 'Duration accepts Human Format, or ActiveSupport::Duration (e.g. 1.hour)'
|
|
33
33
|
end
|
|
34
34
|
|
|
@@ -67,7 +67,7 @@ module LabClient
|
|
|
67
67
|
|
|
68
68
|
doc 'Time Stats' do
|
|
69
69
|
title 'Estimate'
|
|
70
|
-
desc 'Sets an estimated time of work for this merge request. [
|
|
70
|
+
desc 'Sets an estimated time of work for this merge request. [Project ID, issue iid, duration]'
|
|
71
71
|
markdown 'Duration accepts Human Format, or ActiveSupport::Duration (e.g. 1.hour)'
|
|
72
72
|
end
|
|
73
73
|
|
|
@@ -108,7 +108,7 @@ module LabClient
|
|
|
108
108
|
doc 'Time Stats' do
|
|
109
109
|
title 'Reset'
|
|
110
110
|
subtitle 'Estimate'
|
|
111
|
-
desc 'Resets the estimated time for this merge request to 0 seconds. [
|
|
111
|
+
desc 'Resets the estimated time for this merge request to 0 seconds. [Project ID, Issue IID]'
|
|
112
112
|
example 'client.issues.reset_time_estimate(30, 1)'
|
|
113
113
|
result <<~DOC
|
|
114
114
|
=> {:time_estimate=>0, :total_time_spent=>0, :human_time_estimate=>nil, :human_total_time_spent=>nil}
|
|
@@ -132,7 +132,7 @@ module LabClient
|
|
|
132
132
|
|
|
133
133
|
doc 'Time Stats' do
|
|
134
134
|
subtitle 'Time Spent'
|
|
135
|
-
desc 'Resets the estimated time for this merge request to 0 seconds. [
|
|
135
|
+
desc 'Resets the estimated time for this merge request to 0 seconds. [Project ID, Issue IID]'
|
|
136
136
|
example 'client.issues.reset_spent_time(30, 1)'
|
|
137
137
|
result <<~DOC
|
|
138
138
|
=> {:time_estimate=>0, :total_time_spent=>0, :human_time_estimate=>nil, :human_total_time_spent=>nil}
|