/
pullrequest.go
104 lines (90 loc) · 2.78 KB
/
pullrequest.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package test
import (
"fmt"
"poule/gh"
"github.com/google/go-github/github"
)
// NewPullRequestBuilder returns a new PullRequestBuilder instance.
func NewPullRequestBuilder(number int) *PullRequestBuilder {
return &PullRequestBuilder{
Value: &github.PullRequest{
Number: github.Int(number),
},
}
}
// PullRequestBuilder is a helper type to generate a pull request object.
type PullRequestBuilder struct {
Value *github.PullRequest
}
// Item returns the the underlying pull request as an item.
func (p *PullRequestBuilder) Item() gh.Item {
return gh.MakePullRequestItem(p.Value)
}
// BaseBranch sets the Base attribute of the pull request.
func (p *PullRequestBuilder) BaseBranch(username, repository, ref string, SHA string) *PullRequestBuilder {
p.Value.Base = &github.PullRequestBranch{
Ref: github.String(ref),
Repo: &github.Repository{
FullName: github.String(username + "/" + repository),
Name: github.String(repository),
Owner: &github.User{
Login: github.String(username),
},
},
SHA: github.String(SHA),
}
return p
}
// Body sets the body attribute of the pull request.
func (p *PullRequestBuilder) Body(body string) *PullRequestBuilder {
p.Value.Body = github.String(body)
return p
}
// Commits sets the commits objects of the pull request.
func (p *PullRequestBuilder) Commits(commits int) *PullRequestBuilder {
p.Value.Commits = github.Int(commits)
return p
}
// HeadBranch sets the Head attribute of the pull request.
func (p *PullRequestBuilder) HeadBranch(username, repository, ref string, SHA string) *PullRequestBuilder {
p.Value.Head = &github.PullRequestBranch{
Ref: github.String(ref),
Repo: &github.Repository{
FullName: github.String(username + "/" + repository),
Name: github.String(repository),
Owner: &github.User{
Login: github.String(username),
},
SSHURL: github.String(fmt.Sprintf("ssh@%s", repository)),
},
SHA: github.String(SHA),
}
return p
}
// Merged sets the Merge attribute of the pull request.
func (p *PullRequestBuilder) Merged(merged bool) *PullRequestBuilder {
p.Value.Merged = github.Bool(merged)
return p
}
// Number sets the number of the pull request.
func (p *PullRequestBuilder) Number(number int) *PullRequestBuilder {
p.Value.Number = github.Int(number)
return p
}
// State sets the state of the pull request.
func (p *PullRequestBuilder) State(state string) *PullRequestBuilder {
p.Value.State = github.String(state)
return p
}
// Title sets the title of the pull request.
func (p *PullRequestBuilder) Title(title string) *PullRequestBuilder {
p.Value.Title = github.String(title)
return p
}
// UserLogin sets the user of the pull request.
func (p *PullRequestBuilder) UserLogin(title string) *PullRequestBuilder {
p.Value.User = &github.User{
Login: github.String(title),
}
return p
}