@@ -7,6 +7,7 @@ package harness
7
7
import (
8
8
"context"
9
9
"fmt"
10
+ "github.com/drone/go-scm/scm/driver/internal/null"
10
11
"strconv"
11
12
"strings"
12
13
"time"
@@ -123,44 +124,38 @@ func (s *pullService) Close(context.Context, string, int) (*scm.Response, error)
123
124
// native data structures
124
125
type (
125
126
pr struct {
126
- Author struct {
127
- Created int `json:"created"`
128
- DisplayName string `json:"display_name"`
129
- Email string `json:"email"`
130
- ID int `json:"id"`
131
- Type string `json:"type"`
132
- UID string `json:"uid"`
133
- Updated int `json:"updated"`
134
- } `json:"author"`
135
- Created int `json:"created"`
136
- Description string `json:"description"`
137
- Edited int `json:"edited"`
138
- IsDraft bool `json:"is_draft"`
139
- MergeBaseSha string `json:"merge_base_sha"`
140
- MergeHeadSha string `json:"merge_head_sha"`
141
- MergeStrategy string `json:"merge_strategy"`
142
- Merged int `json:"merged"`
143
- Merger struct {
144
- Created int `json:"created"`
145
- DisplayName string `json:"display_name"`
146
- Email string `json:"email"`
147
- ID int `json:"id"`
148
- Type string `json:"type"`
149
- UID string `json:"uid"`
150
- Updated int `json:"updated"`
151
- } `json:"merger"`
152
- Number int `json:"number"`
127
+ Author principal `json:"author"`
128
+ Created int64 `json:"created"`
129
+ Description string `json:"description"`
130
+ Edited int64 `json:"edited"`
131
+ IsDraft bool `json:"is_draft"`
132
+
133
+ MergeTargetSHA null.String `json:"merge_target_sha"`
134
+ MergeBaseSha string `json:"merge_base_sha"`
135
+ Merged null.Int `json:"merged"`
136
+ MergeMethod null.String `json:"merge_method"`
137
+ MergeSHA null.String `json:"merge_sha"`
138
+ MergeCheckStatus string `json:"merge_check_status"`
139
+ MergeConflicts []string `json:"merge_conflicts,omitempty"`
140
+ Merger * principal `json:"merger"`
141
+
142
+ Number int64 `json:"number"`
143
+
153
144
SourceBranch string `json:"source_branch"`
154
- SourceRepoID int `json:"source_repo_id"`
155
- State string `json:"state"`
156
- Stats struct {
157
- Commits int `json:"commits"`
158
- Conversations int `json:"conversations"`
159
- FilesChanged int `json:"files_changed"`
160
- } `json:"stats"`
145
+ SourceRepoID int64 `json:"source_repo_id"`
146
+ SourceSHA string `json:"source_sha"`
161
147
TargetBranch string `json:"target_branch"`
162
- TargetRepoID int `json:"target_repo_id"`
163
- Title string `json:"title"`
148
+ TargetRepoID int64 `json:"target_repo_id"`
149
+
150
+ State string `json:"state"`
151
+ Stats struct {
152
+ Commits null.Int `json:"commits,omitempty"`
153
+ Conversations int `json:"conversations,omitempty"`
154
+ FilesChanged null.Int `json:"files_changed,omitempty"`
155
+ UnresolvedCount int `json:"unresolved_count,omitempty"`
156
+ } `json:"stats"`
157
+
158
+ Title string `json:"title"`
164
159
}
165
160
166
161
reference struct {
@@ -246,21 +241,34 @@ func convertPullRequests(src []*pr) []*scm.PullRequest {
246
241
247
242
func convertPullRequest (src * pr ) * scm.PullRequest {
248
243
return & scm.PullRequest {
249
- Number : src .Number ,
244
+ Number : int ( src .Number ) ,
250
245
Title : src .Title ,
251
246
Body : src .Description ,
247
+ Sha : src .SourceSHA ,
252
248
Source : src .SourceBranch ,
253
249
Target : src .TargetBranch ,
254
- Merged : src .Merged != 0 ,
250
+ Merged : src .Merged . Valid ,
255
251
Author : scm.User {
256
252
Login : src .Author .Email ,
257
253
Name : src .Author .DisplayName ,
258
254
ID : src .Author .UID ,
259
255
Email : src .Author .Email ,
260
256
},
261
- Fork : "fork" ,
262
- Ref : fmt .Sprintf ("refs/pullreq/%d/head" , src .Number ),
263
- Closed : src .State == "closed" ,
257
+ Head : scm.Reference {
258
+ Name : src .SourceBranch ,
259
+ Path : scm .ExpandRef (src .SourceBranch , "refs/heads" ),
260
+ Sha : src .SourceSHA ,
261
+ },
262
+ Base : scm.Reference {
263
+ Name : src .TargetBranch ,
264
+ Path : scm .ExpandRef (src .TargetBranch , "refs/heads" ),
265
+ Sha : src .MergeTargetSHA .String ,
266
+ },
267
+ Fork : "fork" ,
268
+ Ref : fmt .Sprintf ("refs/pullreq/%d/head" , src .Number ),
269
+ Closed : src .State == "closed" ,
270
+ Created : time .UnixMilli (src .Created ),
271
+ Updated : time .UnixMilli (src .Edited ),
264
272
}
265
273
}
266
274
0 commit comments