git-gitlab 0.2.0 → 0.2.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.
- data/README.md +6 -2
- data/README_ja.md +6 -2
- data/bin/git-gitlab +23 -3
- data/lib/git/error.rb +1 -0
- data/lib/git/gitlab/api/issue.rb +2 -10
- data/lib/git/gitlab/api/mergerequest.rb +30 -5
- data/lib/git/gitlab/apiclient.rb +21 -1
- data/lib/git/gitlab/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -25,8 +25,8 @@ Or install it yourself as:
|
|
25
25
|
Config some setting
|
26
26
|
|
27
27
|
git config --global gitlab.url http://gitlab.example.com/
|
28
|
-
git config --
|
29
|
-
git config gitlab.
|
28
|
+
git config --global gitlab.token GITLAB_SECRET_TOKEN
|
29
|
+
git config gitlab.project NAMESPACE/PROJECT
|
30
30
|
|
31
31
|
### Let' run and Confirm setting
|
32
32
|
|
@@ -36,6 +36,10 @@ Config some setting
|
|
36
36
|
|
37
37
|
git gitlab merge SOURCE_BRANCH TARGET_BRANCH --assign USER_NAME
|
38
38
|
|
39
|
+
### Get Mergerequest list
|
40
|
+
|
41
|
+
git gitlab merge --list
|
42
|
+
|
39
43
|
### Show Issue by ID
|
40
44
|
|
41
45
|
git gitlab issue ISSUE_ID
|
data/README_ja.md
CHANGED
@@ -15,8 +15,8 @@ Ruby関連のツールをインストールして、次のコマンドを実行
|
|
15
15
|
次のようにGitの設定を行います
|
16
16
|
|
17
17
|
git config --global gitlab.url http://gitlab.example.com/
|
18
|
-
git config --
|
19
|
-
git config gitlab.
|
18
|
+
git config --glolab gitlab.token GITLAB_SECRET_TOKEN
|
19
|
+
git config gitlab.project NAMESPACE/PROJECT
|
20
20
|
|
21
21
|
### 設定の確認を行います
|
22
22
|
|
@@ -26,6 +26,10 @@ Ruby関連のツールをインストールして、次のコマンドを実行
|
|
26
26
|
|
27
27
|
git gitlab merge SOURCE_BRANCH TARGET_BRANCH --assign USER_NAME
|
28
28
|
|
29
|
+
### OpenなMergerequestを全て取得します
|
30
|
+
|
31
|
+
git gitlab merge --list
|
32
|
+
|
29
33
|
### IDでイシューを検索し、表示します
|
30
34
|
|
31
35
|
git gitlab issue ISSUE_ID
|
data/bin/git-gitlab
CHANGED
@@ -8,8 +8,20 @@ class GitGitlabCLI < Thor
|
|
8
8
|
@@gitlab = GitlabKernel.new
|
9
9
|
|
10
10
|
desc "merge SOURCE TARGET --assign ${ASSING}", "create mergerequest SOURCE to TARGET. assign to ${ASSING}"
|
11
|
+
long_desc <<-LONGDESC
|
12
|
+
[-l | --list] get all opened mergerequests
|
13
|
+
LONGDESC
|
11
14
|
option :assign
|
12
|
-
|
15
|
+
option :list, :type => :boolean
|
16
|
+
option :l , :type => :boolean
|
17
|
+
def merge(source, target = nil)
|
18
|
+
if options[:list] || options[:l]
|
19
|
+
mergerequests = @@gitlab.mergerequests
|
20
|
+
result = mergerequests.map { |m| "\##{m.iid}, #{m.title}" }.join("\n")
|
21
|
+
puts(result)
|
22
|
+
exit 0
|
23
|
+
end
|
24
|
+
|
13
25
|
title = source
|
14
26
|
assign = options[:assign]
|
15
27
|
begin
|
@@ -18,10 +30,14 @@ class GitGitlabCLI < Thor
|
|
18
30
|
else
|
19
31
|
@@gitlab.create_merge_request(title, assign, source, target)
|
20
32
|
end
|
21
|
-
rescue
|
33
|
+
rescue GitlabApi::Error::MergeRequestError => e
|
22
34
|
puts("Failed Create Merge Request")
|
23
35
|
puts("Please check your command's argument ,options and already exists mergerequests...")
|
24
|
-
|
36
|
+
puts(e.message)
|
37
|
+
exit 1
|
38
|
+
rescue GitlabApi::Error::ProjectIdNotFound => e
|
39
|
+
puts(e.message)
|
40
|
+
exit 1
|
25
41
|
end
|
26
42
|
puts("created mergerequest at")
|
27
43
|
puts(url)
|
@@ -40,6 +56,10 @@ class GitGitlabCLI < Thor
|
|
40
56
|
issue = @@gitlab.issue(id)
|
41
57
|
rescue GitlabApi::Error::IssueNotFound => e
|
42
58
|
puts("Could not find \##{id} issue!!")
|
59
|
+
puts(e.message)
|
60
|
+
exit 1
|
61
|
+
rescue GitlabApi::Error::ProjectIdNotFound => e
|
62
|
+
puts(e.message)
|
43
63
|
exit 1
|
44
64
|
end
|
45
65
|
|
data/lib/git/error.rb
CHANGED
data/lib/git/gitlab/api/issue.rb
CHANGED
@@ -10,11 +10,7 @@ class GitlabApi::ApiClient
|
|
10
10
|
PAGE = 1
|
11
11
|
|
12
12
|
def issue(id)
|
13
|
-
pid =
|
14
|
-
|
15
|
-
if pid == 0
|
16
|
-
raise "Please set 'git config gitlab.projectid ${Gitlab Project id}'"
|
17
|
-
end
|
13
|
+
pid = project_id
|
18
14
|
|
19
15
|
issues = all_issues(pid, PAGE, PER_PAGE)
|
20
16
|
|
@@ -30,11 +26,7 @@ class GitlabApi::ApiClient
|
|
30
26
|
end
|
31
27
|
|
32
28
|
def issues(with_closed)
|
33
|
-
pid =
|
34
|
-
|
35
|
-
if pid == 0
|
36
|
-
raise "Please set 'git config gitlab.projectid ${Gitlab Project id}'"
|
37
|
-
end
|
29
|
+
pid = project_id
|
38
30
|
|
39
31
|
issues = all_issues(pid, PAGE, PER_PAGE)
|
40
32
|
if with_closed
|
@@ -5,12 +5,11 @@ require "git/error"
|
|
5
5
|
class GitlabApi::ApiClient
|
6
6
|
|
7
7
|
module Mergerequest
|
8
|
-
|
9
|
-
|
8
|
+
PER_PAGE = 100
|
9
|
+
PAGE = 1
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
11
|
+
def create_merge_request(title, assign, source, target = "master")
|
12
|
+
pid = project_id
|
14
13
|
|
15
14
|
mr_title = if title == nil
|
16
15
|
@repository.head.name
|
@@ -47,5 +46,31 @@ class GitlabApi::ApiClient
|
|
47
46
|
|
48
47
|
mergerequest_url
|
49
48
|
end
|
49
|
+
|
50
|
+
def mergerequests
|
51
|
+
pid = project_id
|
52
|
+
|
53
|
+
all_mergerequests(pid, PAGE, PER_PAGE).select { |m|
|
54
|
+
m.state == "opened"
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
def all_mergerequests(pid, page, per_page)
|
59
|
+
def _mergerequests(list, pid, page, per_page)
|
60
|
+
m = @client.merge_requests(pid, :page => page, :per_page => per_page)
|
61
|
+
if m.count < per_page
|
62
|
+
list + m
|
63
|
+
else
|
64
|
+
_mergerequests(list + m, pid, page + 1, per_page)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
m = @client.merge_requests(pid, :page => page, :per_page => per_page)
|
69
|
+
if m.count < per_page
|
70
|
+
m
|
71
|
+
else
|
72
|
+
_mergerequests(m, pid, page + 1, per_page)
|
73
|
+
end
|
74
|
+
end
|
50
75
|
end
|
51
76
|
end
|
data/lib/git/gitlab/apiclient.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require "git/gitlab/version"
|
2
|
+
require "git/error"
|
2
3
|
require "gitlab"
|
3
4
|
require "grit"
|
4
|
-
|
5
|
+
require "uri"
|
5
6
|
|
6
7
|
module GitlabApi
|
7
8
|
class ApiClient
|
@@ -31,5 +32,24 @@ module GitlabApi
|
|
31
32
|
|
32
33
|
@client = Gitlab.client
|
33
34
|
end
|
35
|
+
|
36
|
+
def project_id
|
37
|
+
pid = if @repository.config.keys.include? "gitlab.projectid"
|
38
|
+
@repository.config["gitlab.projectid"].to_i
|
39
|
+
else
|
40
|
+
@repository.config["gitlab.project"]
|
41
|
+
end
|
42
|
+
|
43
|
+
if pid == nil
|
44
|
+
raise "Please set 'git config gitlab.projectid ${Gitlab Project id}' of git config gitlab.project ${NAMESPACE/PROJECT}"
|
45
|
+
end
|
46
|
+
|
47
|
+
begin
|
48
|
+
@client.project( URI.encode_www_form_component(pid.to_s)).id
|
49
|
+
rescue Gitlab::Error::NotFound => e
|
50
|
+
raise GitlabApi::Error::ProjectIdNotFound, "Can not find #{pid} Project."
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
34
54
|
end
|
35
55
|
end
|
data/lib/git/gitlab/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: git-gitlab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-04-
|
12
|
+
date: 2014-04-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|