-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgithubtrigger.go
More file actions
99 lines (86 loc) · 2.43 KB
/
Copy pathgithubtrigger.go
File metadata and controls
99 lines (86 loc) · 2.43 KB
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
package api
import (
"encoding/json"
"strconv"
)
// GitHubTrigger selects which workflow runs a linked repository deploys from.
type GitHubTrigger int
const (
// GitHubTriggerAll deploys on push to the production branch AND posts a
// preview on every pull request. It is the zero value and the default.
GitHubTriggerAll GitHubTrigger = iota // all
// GitHubTriggerBranch deploys on push to the production branch only — no
// pull-request previews.
GitHubTriggerBranch // branch
// GitHubTriggerPR posts pull-request previews only — no branch ever deploys.
GitHubTriggerPR // pr
)
var allGitHubTriggers = []GitHubTrigger{
GitHubTriggerAll,
GitHubTriggerBranch,
GitHubTriggerPR,
}
func (t GitHubTrigger) String() string {
switch t {
case GitHubTriggerAll:
return "all"
case GitHubTriggerBranch:
return "branch"
case GitHubTriggerPR:
return "pr"
}
return "GitHubTrigger(" + strconv.Itoa(int(t)) + ")"
}
func (t GitHubTrigger) Valid() bool {
switch t {
case GitHubTriggerAll, GitHubTriggerBranch, GitHubTriggerPR:
return true
}
return false
}
// DeploysBranch reports whether this trigger deploys branch pushes (to
// production). True for "all" and "branch".
func (t GitHubTrigger) DeploysBranch() bool {
return t == GitHubTriggerAll || t == GitHubTriggerBranch
}
// DeploysPR reports whether this trigger posts pull-request previews. True for
// "all" and "pr".
func (t GitHubTrigger) DeploysPR() bool {
return t == GitHubTriggerAll || t == GitHubTriggerPR
}
// ParseGitHubTriggerString maps "all"/"branch"/"pr" (and "" → all, the default)
// to a GitHubTrigger. An unrecognized non-empty value returns an invalid
// trigger (Valid() == false) so callers can reject it.
func ParseGitHubTriggerString(s string) GitHubTrigger {
switch s {
case "", "all":
return GitHubTriggerAll
case "branch":
return GitHubTriggerBranch
case "pr":
return GitHubTriggerPR
}
return GitHubTrigger(-1)
}
func (t GitHubTrigger) MarshalJSON() ([]byte, error) {
return json.Marshal(t.String())
}
func (t *GitHubTrigger) UnmarshalJSON(b []byte) error {
var s string
if err := json.Unmarshal(b, &s); err != nil {
return err
}
*t = ParseGitHubTriggerString(s)
return nil
}
func (t GitHubTrigger) MarshalYAML() (any, error) {
return t.String(), nil
}
func (t *GitHubTrigger) UnmarshalYAML(unmarshal func(any) error) error {
var s string
if err := unmarshal(&s); err != nil {
return err
}
*t = ParseGitHubTriggerString(s)
return nil
}