-
Notifications
You must be signed in to change notification settings - Fork 3
/
gitlab_events.go.tmpl
59 lines (47 loc) · 2.43 KB
/
gitlab_events.go.tmpl
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
// Code generated by codegen. DO NOT EDIT.
package probot
import "github.com/xanzy/go-gitlab"
// {{ $.Prefix }} contains all event and handler types
type {{ $.Prefix }} struct {
{{ range $event := .Events }}// {{ $event.Type }} is webhook event `{{ toSnake $event.Type }}`.
{{ $event.Type }} {{ $.Prefix }}{{ $event.Type }}AllInOne
{{ end }}
}
{{ range $event := .Events }}
// {{ $.Prefix }}{{ $event.Type }}AllInOne contains event and handler for type {{ $event.Type }}
type {{ $.Prefix }}{{ $event.Type }}AllInOne struct {
{{ $.Prefix }}{{ $event.Type }}
{{ range $val := .Actions }}// {{ toCamel $val }} is `{{ toSnake $event.Type }}` event with `{{ $val }}` action.
{{ toCamel $val }} {{ $.Prefix }}{{ $event.Type }}{{toCamel $val}}
{{ end }}
}
{{if $event.Event }}
// GitLab{{ $event.Type }}Context is the context type for {{ $event.Type }} event handler to process
type GitLab{{ $event.Type }}Context = ProbotContext[GitLabClient, gitlab.{{ $event.Event }}]
// Handler returns event handler function to process context
func ({{ $.Prefix }}{{ $event.Type }}AllInOne) Handler(fn func(ctx GitLab{{ $event.Type }}Context)) Handler {
return EventHandlerFunc[GitLabClient, gitlab.{{ $event.Event }}](fn)
}
{{else}}
// GitLab{{ $event.Type }}Context is the context type for {{ $event.Type }} event handler to process
type GitLab{{ $event.Type }}Context = ProbotContext[GitLabClient, gitlab.{{ $event.Type }}Event]
// Handler returns event handler function to process context
func ({{ $.Prefix }}{{ $event.Type }}AllInOne) Handler(fn func(ctx GitLab{{ $event.Type }}Context)) Handler {
return EventHandlerFunc[GitLabClient, gitlab.{{ $event.Type }}Event](fn)
}
{{end}}
// {{ $.Prefix }}{{ $event.Type }} is the base event type of {{ $event.Type }}
type {{ $.Prefix }}{{ $event.Type }} struct{}
// Type implement the WebhookEvent interface
func ({{ $.Prefix }}{{ $event.Type }}) Type() string { return "{{ $event.RawType }}" }
// Action implement the WebhookEvent interface
func ({{ $.Prefix }}{{ $event.Type }}) Action() string { return "{{ $event.Action }}" }
{{ range $val := .Actions }}
// {{ $.Prefix }}{{ $event.Type }}{{ toCamel $val }} is the {{ toCamel $val }} action of {{ $event.Type }} event
type {{ $.Prefix }}{{ $event.Type }}{{ toCamel $val }} struct {
{{ $.Prefix }}{{ $event.Type }}
}
// Action implement the WebhookEvent interface
func ({{ $.Prefix }}{{ $event.Type }}{{ toCamel $val }}) Action() string { return "{{ $val }}" }
{{ end }}
{{ end }}