Skip to content

Commit 565d225

Browse files
Merge pull request #67 from takirala/tga/add-labels-support
Support fetching labels from pull requests in github,gitlab & gitea
2 parents 14a5bd7 + 1ccff59 commit 565d225

File tree

10 files changed

+77
-5
lines changed

10 files changed

+77
-5
lines changed

scm/driver/gitea/pr.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,10 @@ type pr struct {
9595
Merged bool `json:"merged"`
9696
Created time.Time `json:"created_at"`
9797
Updated time.Time `json:"updated_at"`
98+
Labels []struct {
99+
Name string `json:"name"`
100+
Color string `json:"color"`
101+
} `json:"labels"`
98102
}
99103

100104
type reference struct {
@@ -123,6 +127,13 @@ func convertPullRequests(src []*pr) []*scm.PullRequest {
123127
}
124128

125129
func convertPullRequest(src *pr) *scm.PullRequest {
130+
var labels []scm.Label
131+
for _, label := range src.Labels {
132+
labels = append(labels, scm.Label{
133+
Name: label.Name,
134+
Color: label.Color,
135+
})
136+
}
126137
return &scm.PullRequest{
127138
Number: src.Number,
128139
Title: src.Title,
@@ -138,6 +149,7 @@ func convertPullRequest(src *pr) *scm.PullRequest {
138149
Merged: src.Merged,
139150
Created: src.Created,
140151
Updated: src.Updated,
152+
Labels: labels,
141153
}
142154
}
143155

scm/driver/github/pr.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ type pr struct {
9696
MergedAt null.String `json:"merged_at"`
9797
CreatedAt time.Time `json:"created_at"`
9898
UpdatedAt time.Time `json:"updated_at"`
99+
Labels []struct {
100+
Name string `json:"name"`
101+
Color string `json:"color"`
102+
} `json:"labels"`
99103
}
100104

101105
type prInput struct {
@@ -123,6 +127,13 @@ func convertPullRequestList(from []*pr) []*scm.PullRequest {
123127
}
124128

125129
func convertPullRequest(from *pr) *scm.PullRequest {
130+
var labels []scm.Label
131+
for _, label := range from.Labels {
132+
labels = append(labels, scm.Label{
133+
Name: label.Name,
134+
Color: label.Color,
135+
})
136+
}
126137
return &scm.PullRequest{
127138
Number: from.Number,
128139
Title: from.Title,
@@ -151,6 +162,7 @@ func convertPullRequest(from *pr) *scm.PullRequest {
151162
},
152163
Created: from.CreatedAt,
153164
Updated: from.UpdatedAt,
165+
Labels: labels,
154166
}
155167
}
156168

scm/driver/github/testdata/webhooks/pr_labeled.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,14 @@
5555
"node_id": "MDU6TGFiZWw2MzA2MzQ4MA==",
5656
"url": "https://api.github.com/repos/bradrydzewski/drone-test-go/labels/bug",
5757
"name": "bug",
58+
"color": "fc2927",
59+
"default": true
60+
},
61+
{
62+
"id": 63063480,
63+
"node_id": "MDU6TGFiZWw2MzA2MzQ4MA==",
64+
"url": "https://api.github.com/repos/bradrydzewski/drone-test-go/labels/bug",
65+
"name": "documentation",
5866
"color": "fc2929",
5967
"default": true
6068
}

scm/driver/github/testdata/webhooks/pr_labeled.json.golden

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,17 @@
4242
"Avatar": "https://avatars1.githubusercontent.com/u/817538?v=4"
4343
},
4444
"Created": "2018-06-22T23:54:09Z",
45-
"Updated": "2018-06-25T19:05:03Z"
45+
"Updated": "2018-06-25T19:05:03Z",
46+
"labels": [
47+
{
48+
"name": "bug",
49+
"color": "fc2927"
50+
},
51+
{
52+
"name": "documentation",
53+
"color": "fc2929"
54+
}
55+
]
4656
},
4757
"Sender": {
4858
"Login": "bradrydzewski",

scm/driver/gitlab/pr.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ type pr struct {
109109
Created time.Time `json:"created_at"`
110110
Updated time.Time `json:"updated_at"`
111111
Closed time.Time
112+
Labels []string `json:"labels"`
112113
}
113114

114115
type changes struct {
@@ -132,6 +133,12 @@ func convertPullRequestList(from []*pr) []*scm.PullRequest {
132133
}
133134

134135
func convertPullRequest(from *pr) *scm.PullRequest {
136+
var labels []scm.Label
137+
for _, label := range from.Labels {
138+
labels = append(labels, scm.Label{
139+
Name: label,
140+
})
141+
}
135142
return &scm.PullRequest{
136143
Number: from.Number,
137144
Title: from.Title,
@@ -150,6 +157,7 @@ func convertPullRequest(from *pr) *scm.PullRequest {
150157
},
151158
Created: from.Created,
152159
Updated: from.Updated,
160+
Labels: labels,
153161
}
154162
}
155163

scm/driver/gitlab/testdata/merge.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"assignee": null,
2323
"source_project_id": 32732,
2424
"target_project_id": 32732,
25-
"labels": [],
25+
"labels": ["bug", "documentation"],
2626
"work_in_progress": false,
2727
"milestone": null,
2828
"merge_when_pipeline_succeeds": false,

scm/driver/gitlab/testdata/merge.json.golden

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,13 @@
1616
"Avatar": "https://secure.gravatar.com/avatar/b5bf44866b4eeafa2d8114bfe15da02f?s=80\u0026d=identicon"
1717
},
1818
"Created": "2015-12-18T18:29:53.563Z",
19-
"Updated": "2015-12-18T18:30:22.522Z"
19+
"Updated": "2015-12-18T18:30:22.522Z",
20+
"Labels": [
21+
{
22+
"name": "bug"
23+
},
24+
{
25+
"name": "documentation"
26+
}
27+
]
2028
}

scm/driver/gitlab/testdata/merges.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"assignee": null,
2424
"source_project_id": 32732,
2525
"target_project_id": 32732,
26-
"labels": [],
26+
"labels": ["bug", "documentation"],
2727
"work_in_progress": false,
2828
"milestone": null,
2929
"merge_when_pipeline_succeeds": false,

scm/driver/gitlab/testdata/merges.json.golden

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@
1717
"Avatar": "https://secure.gravatar.com/avatar/b5bf44866b4eeafa2d8114bfe15da02f?s=80\u0026d=identicon"
1818
},
1919
"Created": "2015-12-18T18:29:53.563Z",
20-
"Updated": "2015-12-18T18:30:22.522Z"
20+
"Updated": "2015-12-18T18:30:22.522Z",
21+
"Labels": [
22+
{
23+
"name": "bug"
24+
},
25+
{
26+
"name": "documentation"
27+
}
28+
]
2129
}
2230
]

scm/pr.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type (
2828
Author User
2929
Created time.Time
3030
Updated time.Time
31+
Labels []Label
3132
}
3233

3334
// PullRequestInput provides the input fields required for creating a pull request.
@@ -55,6 +56,11 @@ type (
5556
Deleted bool
5657
}
5758

59+
Label struct {
60+
Name string
61+
Color string
62+
}
63+
5864
// PullRequestService provides access to pull request resources.
5965
PullRequestService interface {
6066
// Find returns the repository pull request by number.

0 commit comments

Comments
 (0)