gitlab 3.4.0 → 3.5.0

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -2
  3. data/README.md +22 -0
  4. data/bin/console +10 -0
  5. data/bin/setup +6 -0
  6. data/{bin → exe}/gitlab +0 -0
  7. data/gitlab.gemspec +4 -1
  8. data/lib/gitlab.rb +1 -1
  9. data/lib/gitlab/cli.rb +20 -2
  10. data/lib/gitlab/cli_helpers.rb +74 -15
  11. data/lib/gitlab/client.rb +2 -0
  12. data/lib/gitlab/client/commits.rb +121 -0
  13. data/lib/gitlab/client/groups.rb +25 -2
  14. data/lib/gitlab/client/issues.rb +7 -0
  15. data/lib/gitlab/client/milestones.rb +6 -0
  16. data/lib/gitlab/client/namespaces.rb +19 -0
  17. data/lib/gitlab/client/notes.rb +12 -0
  18. data/lib/gitlab/client/projects.rb +30 -0
  19. data/lib/gitlab/client/repositories.rb +0 -75
  20. data/lib/gitlab/client/repository_files.rb +16 -0
  21. data/lib/gitlab/client/snippets.rb +15 -0
  22. data/lib/gitlab/client/users.rb +54 -5
  23. data/lib/gitlab/configuration.rb +14 -0
  24. data/lib/gitlab/error.rb +3 -0
  25. data/lib/gitlab/request.rb +13 -2
  26. data/lib/gitlab/shell.rb +1 -2
  27. data/lib/gitlab/version.rb +1 -1
  28. data/spec/fixtures/branch_delete.json +0 -0
  29. data/spec/fixtures/get_repository_file.json +1 -0
  30. data/spec/fixtures/group_create_with_description.json +1 -0
  31. data/spec/fixtures/group_search.json +2 -0
  32. data/spec/fixtures/namespaces.json +1 -0
  33. data/spec/fixtures/project_commit_status.json +42 -0
  34. data/spec/fixtures/project_edit.json +21 -0
  35. data/spec/fixtures/project_fork.json +50 -0
  36. data/spec/fixtures/project_forked_for_user.json +50 -0
  37. data/spec/fixtures/project_update_commit_status.json +20 -0
  38. data/spec/fixtures/snippet_content.json +3 -0
  39. data/spec/fixtures/user.json +1 -1
  40. data/spec/fixtures/user_block_unblock.json +1 -0
  41. data/spec/fixtures/users.json +1 -1
  42. data/spec/gitlab/cli_helpers_spec.rb +6 -6
  43. data/spec/gitlab/cli_spec.rb +16 -0
  44. data/spec/gitlab/client/commits_spec.rb +137 -0
  45. data/spec/gitlab/client/groups_spec.rb +51 -13
  46. data/spec/gitlab/client/namespaces_spec.rb +22 -0
  47. data/spec/gitlab/client/projects_spec.rb +51 -0
  48. data/spec/gitlab/client/repositories_spec.rb +0 -88
  49. data/spec/gitlab/client/repository_files_spec.rb +17 -0
  50. data/spec/gitlab/client/snippets_spec.rb +15 -0
  51. data/spec/gitlab/client/users_spec.rb +73 -0
  52. data/spec/gitlab/help_spec.rb +1 -1
  53. data/spec/gitlab/request_spec.rb +16 -3
  54. data/spec/gitlab/shell_spec.rb +2 -2
  55. metadata +51 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3aff91d521f83558b2ae2a2f9d5044be3753c48
4
- data.tar.gz: e44498d72ac0c58dc3c8d609e53167fef2a30107
3
+ metadata.gz: d2242783ef61cde9b3be8c6fad965bfbeb98aaa4
4
+ data.tar.gz: 01c567c9524d1e9ca20a0c0798d9b72fbe618f47
5
5
  SHA512:
6
- metadata.gz: 0e5dc00e6c2c0f34837798e9370a82013154c595b4cde38397d20e87b3bd7457cb5a0e32a6b578df1ebbe6e1457eda03c468da21a91c4ab26a42ff54de43d91e
7
- data.tar.gz: d9cd147c62de28adb48a9be726b6b1a44b8c0e2d63337d44df2cd1f6eaf18ace338a7f1b8ab7a649683bbe6bb3537015be8dd45a46e44577bb1fdf9b0548bc52
6
+ metadata.gz: 350d4ff66a74e000d55127271d526c77fbb56889d54b52e3c4f683c210f3c9ea62a763b706086070e1b0ff7cc02293fdc303ddd841c29cd51c4f79f1036f5e77
7
+ data.tar.gz: 4ca42fbb5fd028381944d77b016167e2471f013393b59030ee7ed3f5c700cf791af9ae43a542f45f7f769550003e64017fa6dde079c3e683dc3314718f6c32ea
@@ -1,7 +1,35 @@
1
1
  ## Change Log
2
2
 
3
- ### upcoming
4
- - **Your contribution here.**
3
+ ### upcoming (26/11/2015)
4
+ - [a4f2150](https://github.com/NARKOZ/gitlab/commit/a4f21504a7288caace5b7433b49f49dc31e32b30) Add support for namespaces endpoint
5
+ - [3ad81a1](https://github.com/NARKOZ/gitlab/commit/3ad81a19a10b35ea422c0abcf08e6d03a325f4cd) Add missing "@" in doc. (@asedge)
6
+ - [fc34acb](https://github.com/NARKOZ/gitlab/commit/fc34acb6b475bb2555e4b035c11fdf42b3db4085) Add Gitlab::Client::Commits and rearrange methods and tests related to commits. (@asedge)
7
+ - [527089b](https://github.com/NARKOZ/gitlab/commit/527089b17fa7ed74a39b30dc6e8bb33482c1044b) Add commit status API, was added in Gitlab 8.1 (@dsander)
8
+ - [0a2f1db](https://github.com/NARKOZ/gitlab/commit/0a2f1dbe3efb66511dc836ef0ef884efedd70ef3) Add --json CLI parameter to output results as JSON
9
+ - [3f9cb62](https://github.com/NARKOZ/gitlab/commit/3f9cb625517c7294652139f2748e4bc7b98848cc) Adding sudo option for when forking a project (@gregoriomelo)
10
+ - [8dd964e](https://github.com/NARKOZ/gitlab/commit/8dd964ee743e051fade3137d8fac9bb387770150) Fix CLI configuration example comment line width to <= 80. (@asedge)
11
+ - [bbb8b61](https://github.com/NARKOZ/gitlab/commit/bbb8b61db46b32b8649956cb81d9a41e132493d4) Add comment for CLI configuration example. (@asedge)
12
+ - [30e96b9](https://github.com/NARKOZ/gitlab/commit/30e96b9444f7d60d4c0a56f57202c609497126eb) Update README.md (@raine)
13
+ - [d81f05b](https://github.com/NARKOZ/gitlab/commit/d81f05b80b7aaccef49641acfada3b2181f1633d) Change #handle_error method so it handles errors that are returned as an Array. (@asedge)
14
+ - [4c0395e](https://github.com/NARKOZ/gitlab/commit/4c0395ebc58c5a907489b6dc9dcac151e07b4dc8) Add Unprocessable error handler (@ondra-m)
15
+ - [3179bed](https://github.com/NARKOZ/gitlab/commit/3179bedc498b6c5577cc3c0b04633f67eb286ea9) Add block/unblock user. This API feature was added in GitLab 7.13 (@azomazo)
16
+ - [9946c7d](https://github.com/NARKOZ/gitlab/commit/9946c7d2a2c4261cbfc9c4a492b079c79abc2767) Check for specific exceptions in tests to suppress rspec warnings. (@asedge)
17
+ - [5e1c025](https://github.com/NARKOZ/gitlab/commit/5e1c025b8fdf723770c7c7ac0116acdf5cc9f2d5) Added support description option in create_group method (@azomazo)
18
+ - [46b657e](https://github.com/NARKOZ/gitlab/commit/46b657e47a29bc18f4122fff593a9eb58b73e4f1) deleting a gitlab project returns the string "true" (@tosmi)
19
+ - [cc3b489](https://github.com/NARKOZ/gitlab/commit/cc3b489cdeb3bd18b4ec841f80e76e74ddd0ce37) add development scripts (@NARKOZ)
20
+ - [24ad7fd](https://github.com/NARKOZ/gitlab/commit/24ad7fd2a1bd99eb468f1181d95c75fbec5d8fe0) Added specs edit_project, create_fork, create_user_with_username (@p404)
21
+ - [42e73a2](https://github.com/NARKOZ/gitlab/commit/42e73a2fde3e64dc8e3cf0ec73b8cfad88e43ca8) Added edit_project method to Projects module && updated the create_user method (@p404)
22
+ - [c9822f1](https://github.com/NARKOZ/gitlab/commit/c9822f1b61a8d7a5e855616e80e725730340cd48) Refactor create_user method (@p404)
23
+ - [6d7c4e7](https://github.com/NARKOZ/gitlab/commit/6d7c4e7c3285ee082513b3125346e6ed9c18b24b) Added create_fork method to Projects module (@p404)
24
+ - [54155b6](https://github.com/NARKOZ/gitlab/commit/54155b6c59d6e307744668cb3592ca98cf11d8f2) Add snippet_content method + tests. (@asedge)
25
+ - [cfff385](https://github.com/NARKOZ/gitlab/commit/cfff385b7f528223bf9ddc5f4177883e5ca56492) Remove executable permission on fixture file. (@asedge)
26
+ - [487a372](https://github.com/NARKOZ/gitlab/commit/487a372f7041d104975570747a63c9021881c952) Add RepositoryFiles#get_file method. (@asedge)
27
+ - [c9c05ad](https://github.com/NARKOZ/gitlab/commit/c9c05adee50828cc2e31048006cc95b5f2b9b7ce) Hide auth_token method from CLI/shell. (@asedge)
28
+ - [ef408a7](https://github.com/NARKOZ/gitlab/commit/ef408a7de0e677a568a66dbf212139aafc2e6186) Remove unnecessary require. (@asedge)
29
+ - [a2752d1](https://github.com/NARKOZ/gitlab/commit/a2752d1f5a01759a85d1e2003bb81c8e59cf85d3) Add some missing examples. (@asedge)
30
+ - [ac595af](https://github.com/NARKOZ/gitlab/commit/ac595af15a07601b3b657d4b4c1c479651aaa7d7) Add group_search method. (@asedge)
31
+ - [53a6671](https://github.com/NARKOZ/gitlab/commit/53a667184ed3640aefcb3f67836d37f58a504f24) Added Users#delete_user method (@cthulhu666)
32
+ - [a2360f0](https://github.com/NARKOZ/gitlab/commit/a2360f08019632c2660dbbc6753bd3094286b993) Add httparty ENV variable for CLI. Fixes #127. (@asedge)
5
33
 
6
34
  ### 3.4.0 (22/04/2015)
7
35
  - [9acb83d](https://github.com/NARKOZ/gitlab/commit/9acb83d2d068720b07934f5152313dc22a2f6374) remove check for missing attributes
data/README.md CHANGED
@@ -88,6 +88,17 @@ For more information, refer to [documentation](http://rubydoc.info/gems/gitlab/f
88
88
 
89
89
  ## CLI
90
90
 
91
+ Configuration example:
92
+
93
+ ```sh
94
+ export GITLAB_API_ENDPOINT=https://gitlab.yourcompany.com/api/v3
95
+ export GITLAB_API_PRIVATE_TOKEN=<your private token from /profile/account>
96
+ # This one is optional and can be used to set any HTTParty option you may need
97
+ # using YAML hash syntax. For example, this is how you would disable SSL
98
+ # verification (useful if using a self-signed cert).
99
+ export GITLAB_API_HTTPARTY_OPTIONS="{verify: false}"
100
+ ```
101
+
91
102
  Usage examples:
92
103
 
93
104
  ```sh
@@ -105,6 +116,9 @@ gitlab user --only=id,username
105
116
 
106
117
  gitlab user --except=email,bio
107
118
 
119
+ # get a user and render result as json
120
+ gitlab user 2 --json
121
+
108
122
  # passing options hash to a command (use YAML)
109
123
  gitlab create_merge_request 4 "New merge request" "{source_branch: 'new_branch', target_branch: 'master', assignee_id: 42}"
110
124
 
@@ -134,6 +148,14 @@ gitlab> create_merge_request 4 "New merge request" "{source_branch: 'new_branch'
134
148
  Web version is available at https://gitlab-live.herokuapp.com
135
149
  For more information, refer to [website](http://narkoz.github.io/gitlab).
136
150
 
151
+ ## Development
152
+
153
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
154
+ `rake spec` to run the tests. You can also run `bin/console` for an interactive
155
+ prompt that will allow you to experiment.
156
+
157
+ For more information see [CONTRIBUTING.md](https://github.com/NARKOZ/gitlab/blob/master/CONTRIBUTING.md).
158
+
137
159
  ## License
138
160
 
139
161
  Released under the BSD 2-clause license. See LICENSE.txt for details.
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # ENV['GITLAB_API_ENDPOINT'] = ''
4
+ # ENV['GITLAB_API_PRIVATE_TOKEN'] = ''
5
+
6
+ require 'bundler/setup'
7
+ require 'gitlab'
8
+ require 'pry'
9
+
10
+ Pry.start
@@ -0,0 +1,6 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install &&
6
+ echo 'NOTE: You may need to set GITLAB_API_ENDPOINT and GITLAB_API_PRIVATE_TOKEN environment variables.'
File without changes
@@ -13,13 +13,16 @@ Gem::Specification.new do |gem|
13
13
  gem.homepage = "https://github.com/narkoz/gitlab"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
+ gem.bindir = "exe"
17
+ gem.executables = gem.files.grep(%r{^exe/}) { |f| File.basename(f) }
17
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
19
  gem.require_paths = ["lib"]
20
+ gem.license = "BSD"
19
21
 
20
22
  gem.add_runtime_dependency 'httparty'
21
23
  gem.add_runtime_dependency 'terminal-table'
22
24
 
25
+ gem.add_development_dependency 'pry'
23
26
  gem.add_development_dependency 'rake'
24
27
  gem.add_development_dependency 'rspec'
25
28
  gem.add_development_dependency 'webmock'
@@ -36,7 +36,7 @@ module Gitlab
36
36
  #
37
37
  # @return [Array<Symbol>]
38
38
  def self.actions
39
- hidden = /endpoint|private_token|user_agent|sudo|get|post|put|\Adelete\z|validate|set_request_defaults|httparty/
39
+ hidden = /endpoint|private_token|auth_token|user_agent|sudo|get|post|put|\Adelete\z|validate|set_request_defaults|httparty/
40
40
  (Gitlab::Client.instance_methods - Object.methods).reject {|e| e[hidden]}
41
41
  end
42
42
  end
@@ -6,6 +6,9 @@ require_relative 'shell'
6
6
  class Gitlab::CLI
7
7
  extend Helpers
8
8
 
9
+ # If set to true, JSON will be rendered as output
10
+ @render_json = false
11
+
9
12
  # Starts a new CLI session.
10
13
  #
11
14
  # @example
@@ -43,6 +46,11 @@ class Gitlab::CLI
43
46
  when 'shell'
44
47
  Gitlab::Shell.start
45
48
  else
49
+ if args.include? '--json'
50
+ @json_output = true
51
+ args.delete '--json'
52
+ end
53
+
46
54
  unless valid_command?(cmd)
47
55
  puts "Unknown command. Run `gitlab help` for a list of available commands."
48
56
  exit(1)
@@ -55,8 +63,7 @@ class Gitlab::CLI
55
63
  end
56
64
 
57
65
  begin
58
- yaml_load_arguments! command_args
59
- command_args.map! {|arg| symbolize_keys arg }
66
+ command_args.map! { |arg| symbolize_keys(yaml_load(arg)) }
60
67
  rescue => e
61
68
  puts e.message
62
69
  exit 1
@@ -65,6 +72,17 @@ class Gitlab::CLI
65
72
  confirm_command(cmd)
66
73
 
67
74
  data = gitlab_helper(cmd, command_args) { exit(1) }
75
+
76
+ render_output(cmd, args, data)
77
+ end
78
+ end
79
+
80
+ # Helper method that checks whether we want to get the output as json
81
+ # @return [nil]
82
+ def self.render_output(cmd,args,data)
83
+ if @json_output
84
+ output_json(cmd, args, data)
85
+ else
68
86
  output_table(cmd, args, data)
69
87
  end
70
88
  end
@@ -1,4 +1,6 @@
1
1
  require 'yaml'
2
+ require 'json'
3
+
2
4
 
3
5
  class Gitlab::CLI
4
6
  # Defines methods related to CLI output and formatting.
@@ -99,16 +101,29 @@ class Gitlab::CLI
99
101
  end
100
102
  end
101
103
 
104
+ def output_json(cmd, args, data)
105
+ if data.empty?
106
+ puts '{}'
107
+ else
108
+ hash_result = case data
109
+ when Gitlab::ObjectifiedHash
110
+ record_hash([data], cmd, args, true)
111
+ when Array
112
+ record_hash(data, cmd, args)
113
+ else
114
+ { :cmd => cmd, :data => data, :args => args }
115
+ end
116
+ puts JSON.pretty_generate(hash_result)
117
+ end
118
+ end
119
+
102
120
  # Table to display records.
103
121
  #
104
122
  # @return [Terminal::Table]
105
123
  def record_table(data, cmd, args)
106
124
  return 'No data' if data.empty?
107
125
 
108
- arr = data.map(&:to_h)
109
- keys = arr.first.keys.sort {|x, y| x.to_s <=> y.to_s }
110
- keys = keys & required_fields(args) if required_fields(args).any?
111
- keys = keys - excluded_fields(args)
126
+ arr, keys = get_keys(args, data)
112
127
 
113
128
  table do |t|
114
129
  t.title = "Gitlab.#{cmd} #{args.join(', ')}"
@@ -134,6 +149,54 @@ class Gitlab::CLI
134
149
  end
135
150
  end
136
151
 
152
+ # Renders the result of given commands and arguments into a Hash
153
+ #
154
+ # @param [Array] data Resultset from the API call
155
+ # @param [String] cmd The command passed to the API
156
+ # @param [Array] args Options passed to the API call
157
+ # @param [bool] single_value If set to true, a single result should be returned
158
+ # @return [Hash] Result hash
159
+ def record_hash(data, cmd, args, single_value = false)
160
+ if data.empty?
161
+ result = nil
162
+ else
163
+ arr, keys = get_keys(args, data)
164
+ result = []
165
+ arr.each do |hash|
166
+ row = {}
167
+
168
+ keys.each do |key|
169
+ case hash[key]
170
+ when Hash
171
+ row[key] = 'Hash'
172
+ when nil
173
+ row[key] = nil
174
+ else
175
+ row[key] = hash[key]
176
+ end
177
+ end
178
+
179
+ result.push row
180
+ end
181
+ result = result[0] if single_value && result.count > 0
182
+ end
183
+
184
+ {
185
+ :cmd => "Gitlab.#{cmd} #{args.join(', ')}".strip,
186
+ :result => result
187
+ }
188
+
189
+ end
190
+
191
+ # Helper function to get rows and keys from data returned from API call
192
+ def get_keys(args, data)
193
+ arr = data.map(&:to_h)
194
+ keys = arr.first.keys.sort { |x, y| x.to_s <=> y.to_s }
195
+ keys = keys & required_fields(args) if required_fields(args).any?
196
+ keys = keys - excluded_fields(args)
197
+ return arr, keys
198
+ end
199
+
137
200
  # Helper function to call Gitlab commands with args.
138
201
  def gitlab_helper(cmd, args = [])
139
202
  begin
@@ -162,18 +225,14 @@ class Gitlab::CLI
162
225
  hash
163
226
  end
164
227
 
165
- # Run YAML::load on each arg.
166
- # @return [Array]
167
- def yaml_load_arguments!(args)
168
- args.map! do |arg|
169
- begin
170
- arg = YAML::load(arg)
171
- rescue Psych::SyntaxError
172
- raise "error: Argument is not valid YAML syntax: #{arg}"
173
- end
174
-
175
- arg
228
+ # YAML::load on a single argument
229
+ def yaml_load(arg)
230
+ begin
231
+ yaml = YAML::load(arg)
232
+ rescue Psych::SyntaxError
233
+ raise "error: Argument is not valid YAML syntax: #{arg}"
176
234
  end
235
+ yaml
177
236
  end
178
237
  end
179
238
  end
@@ -4,11 +4,13 @@ module Gitlab
4
4
  Dir[File.expand_path('../client/*.rb', __FILE__)].each {|f| require f}
5
5
 
6
6
  include Branches
7
+ include Commits
7
8
  include Groups
8
9
  include Issues
9
10
  include Labels
10
11
  include MergeRequests
11
12
  include Milestones
13
+ include Namespaces
12
14
  include Notes
13
15
  include Projects
14
16
  include Repositories
@@ -0,0 +1,121 @@
1
+ class Gitlab::Client
2
+ # Defines methods related to repository commits.
3
+ # @see https://github.com/gitlabhq/gitlabhq/blob/master/doc/api/commits.md
4
+ module Commits
5
+ # Gets a list of project commits.
6
+ #
7
+ # @example
8
+ # Gitlab.commits('viking')
9
+ # Gitlab.repo_commits('gitlab', :ref_name => 'api')
10
+ #
11
+ # @param [Integer] project The ID of a project.
12
+ # @param [Hash] options A customizable set of options.
13
+ # @option options [String] :ref_name The branch or tag name of a project repository.
14
+ # @option options [Integer] :page The page number.
15
+ # @option options [Integer] :per_page The number of results per page.
16
+ # @return [Array<Gitlab::ObjectifiedHash>]
17
+ def commits(project, options={})
18
+ get("/projects/#{project}/repository/commits", :query => options)
19
+ end
20
+ alias_method :repo_commits, :commits
21
+
22
+ # Gets a specific commit identified by the commit hash or name of a branch or tag.
23
+ #
24
+ # @example
25
+ # Gitlab.commit(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
26
+ # Gitlab.repo_commit(3, 'ed899a2f4b50b4370feeea94676502b42383c746')
27
+ #
28
+ # @param [Integer] project The ID of a project.
29
+ # @param [String] sha The commit hash or name of a repository branch or tag
30
+ # @return [Gitlab::ObjectifiedHash]
31
+ def commit(project, sha)
32
+ get("/projects/#{project}/repository/commits/#{sha}")
33
+ end
34
+ alias_method :repo_commit, :commit
35
+
36
+ # Get the diff of a commit in a project.
37
+ #
38
+ # @example
39
+ # Gitlab.commit_diff(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
40
+ # Gitlab.repo_commit_diff(3, 'ed899a2f4b50b4370feeea94676502b42383c746')
41
+ #
42
+ # @param [Integer] project The ID of a project.
43
+ # @param [String] sha The name of a repository branch or tag or if not given the default branch.
44
+ # @return [Gitlab::ObjectifiedHash]
45
+ def commit_diff(project, sha)
46
+ get("/projects/#{project}/repository/commits/#{sha}/diff")
47
+ end
48
+ alias_method :repo_commit_diff, :commit_diff
49
+
50
+ # Gets a list of comments for a commit.
51
+ #
52
+ # @example
53
+ # Gitlab.commit_comments(5, 'c9f9662a9b1116c838b523ed64c6abdb4aae4b8b')
54
+ #
55
+ # @param [Integer] project The ID of a project.
56
+ # @param [String] sha The commit hash or name of a repository branch or tag.
57
+ # @option options [Integer] :page The page number.
58
+ # @option options [Integer] :per_page The number of results per page.
59
+ # @return [Array<Gitlab::ObjectifiedHash>]
60
+ def commit_comments(project, commit, options={})
61
+ get("/projects/#{project}/repository/commits/#{commit}/comments", :query => options)
62
+ end
63
+ alias_method :repo_commit_comments, :commit_comments
64
+
65
+ # Creates a new comment for a commit.
66
+ #
67
+ # @example
68
+ # Gitlab.create_commit_comment(5, 'c9f9662a9b1116c838b523ed64c6abdb4aae4b8b', 'Nice work on this commit!')
69
+ #
70
+ # @param [Integer] project The ID of a project.
71
+ # @param [String] sha The commit hash or name of a repository branch or tag.
72
+ # @param [String] note The text of a comment.
73
+ # @param [Hash] options A customizable set of options.
74
+ # @option options [String] :path The file path.
75
+ # @option options [Integer] :line The line number.
76
+ # @option options [String] :line_type The line type (new or old).
77
+ # @return [Gitlab::ObjectifiedHash] Information about created comment.
78
+ def create_commit_comment(project, commit, note, options={})
79
+ post("/projects/#{project}/repository/commits/#{commit}/comments", :body => options.merge(:note => note))
80
+ end
81
+ alias_method :repo_create_commit_comment, :create_commit_comment
82
+
83
+ # Get the status of a commit
84
+ #
85
+ # @example
86
+ # Gitlab.commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6')
87
+ # Gitlab.commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', name: 'jenkins')
88
+ # Gitlab.commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', name: 'jenkins', all: true)
89
+ #
90
+ # @param [Integer] project The ID of a project.
91
+ # @param [String] sha The commit hash
92
+ # @param [Hash] options A customizable set of options.
93
+ # @option options [String] :ref Filter by ref name, it can be branch or tag
94
+ # @option options [String] :stage Filter by stage
95
+ # @option options [String] :name Filer by status name, eg. jenkins
96
+ # @option options [Boolean] :all The flag to return all statuses, not only latest ones
97
+ def commit_status(id, sha, options = {})
98
+ get("/projects/#{id}/repository/commits/#{sha}/statuses", query: options)
99
+ end
100
+ alias_method :repo_commit_status, :commit_status
101
+
102
+ # Adds or updates a status of a commit.
103
+ #
104
+ # @example
105
+ # Gitlab.update_commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'success')
106
+ # Gitlab.update_commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'failed', name: 'jenkins')
107
+ # Gitlab.update_commit_status(42, '6104942438c14ec7bd21c6cd5bd995272b3faff6', 'canceled', name: 'jenkins', target_url: 'http://example.com/builds/1')
108
+ #
109
+ # @param [Integer] project The ID of a project.
110
+ # @param [String] sha The commit hash
111
+ # @param [String] state of the status. Can be: pending, running, success, failed, canceled
112
+ # @param [Hash] options A customizable set of options.
113
+ # @option options [String] :ref The ref (branch or tag) to which the status refers
114
+ # @option options [String] :name Filer by status name, eg. jenkins
115
+ # @option options [String] :target_url The target URL to associate with this status
116
+ def update_commit_status(id, sha, state, options = {})
117
+ post("/projects/#{id}/statuses/#{sha}", query: options.merge(state: state))
118
+ end
119
+ alias_method :repo_update_commit_status, :update_commit_status
120
+ end
121
+ end